python学习笔记:集合set,函数基础

小编 2026-06-06 阅读:1485 评论:0
1、遍历字典     for k,v in d:     则k,v分别是字典中键值对的键和值 2、字典的推导式     比如d = {x:x**2 for x in range(10)}     # d =...

1、遍历字典
    for k,v in d:
    则k,v分别是字典中键值对的键和值
2、字典的推导式
    比如d = {x:x**2 for x in range(10)}
    # d = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
3、例题:生成{\'A1\':\'A_1\',\'A2\':\'A_2\',’A3\':\'A_3\',\'B1\':\'B_1\',...}字典,直到C3结束
    代码:d = {chr(a) + chr(b) : chr(a) + \'_\' + chr(b) for a in range(ord(\'A\'),ord(\'C\')+1) for b in range(ord(\'1\'),ord(\'3\')+1)}

4、字典vs列表
    都是可变对象
    索引方式不同,列表用于整数索引,字典用任意类型不可变对象做索引
    字典的查找速度要快于列表
    列表的存储是有序的,字典的存储是无序的
5、集合set
    集合是可变对象
    集合内的数据对象都是唯一的,不能有重复
    集合是无序的存储结构,集合中的数值没有先后关系
    集合内的元素必须是不可变对象(元组、字符串、单个数据)
    集合是可迭代对象
    集合相当于只有键没有值的字典,键就是集合的数据
6、创建空集合
    s = set()
    注意:不能使用s = {} 创建集合,那样创建的对象的字典
7、创建非空集合
    集合内部变量必须都是不可变对象
    s = {1,2,3}
    s = {\'a\',\'b\',\'c\'}
    s = {1,\'A\'}
    s = {\'a\',[1,2,3]} #这样是错误的,列表不能加入集合
    a = 1234 
    s = {a,1,2,3}这里a的不是引用,而是代表一个实际的数值
8、集合set的构造函数
    s = set()
    s = set(iterable)用可迭代对象生成一个对象
    #s = set(\"hello\") = {\'h\',\'e\',\'l\',\'o\'}且并不保证其顺序,重复的元素算一次 
9、集合的运算
    交集、并集、补集、子集、超集
    &     |     ^     -
    &:生成两个集合的交集
    |:生成两个集合的并集
    -:生成两个集合的补集,s1-s2代表从s1中减去存在于s2中的数据元素
    ^:生成两个集合的对称补集,s1^s2代表从s1和s2的并集中减去交集中的元素
    s1 = {1,2,3}
    s2 = {2,3,4}
    s1 & s2 = {2,3}
    s1 | s2 = {1,2,3,4}
    s1 - s2 = {1}
    s1^s2 = {1,4}
10、集合的比较
    > >= < <= == !=
    s1 > s2 True if s1是s2的超集
    s1 < s2 True if s1是s2的子集
    <= 和 >= 比上述多了一个等于,即集合是否相同
    == != 判断集合是否相等
11、in 和 not in 运算符
    优点:运算速度快于列表和字符串

12、集合常用方法
    S.add(e)    向集合中添加元素e
    S.remove(e)    从集合中删除元素e,若不存在,产生错误
    S.discard(e)    删除元素,不存在不产生错误
    S.clear()    清空集合
    S.copy()    浅拷贝一个集合
    S.pop()        从集合中删除一个随机元素,返回被删除的值,若集合为空则产生错误
    S.update(S2)    将S2并如S中,更新变量S
    其他常用方法均可用上述算术运算代替

13、集合的推导式
    例子:
    l = {\"Jenny\",\"Tony\",\"Animal\",\"Oliga\",\"Jim\"}
    s = {x for x in l if len(x)>=4}
    #从list中筛选长度大于4的字符串加入集合
    if 语句可以省略
14、固定集合frozenset
    是不可变的,无序的,含有唯一元素的容器
    可以作为字典和集合的键
    发现:python中有一个可变的可迭代对象,就会有一个对应的不可变对象,比如
    list -> tuple
    set -> frozenset
    在通信(传输)过程中能够避免错误
    
15、创建固定集合
    frozenset()
    frozenset(iterable)
16、运算符和集合完全一样
    方法相当于去掉集合的全部方法中修改集合的方法
17、函数
    函数的作用:封装语句块,提高代码重用性;允许用户定义用户级别的函数
18、定义一个函数
    def 函数名(参数列表):
        语句块(代码块)
    说明:函数的名字就是语句块的名称
    函数名的命名规则和变量相同
    函数名是一个变量,不要对其轻易赋值
    函数的参数列表可以为空
    语句部分不能为空,如果为空需要空pass填充
    例子:
    def say_hello():
        print(\"hello world!\")
19、调用函数
    函数名(实际传入参数(实参))
    说明:
    如果函数内部没有return语句,汗珠执行完毕后返回None对象
    如果函数需要返回其他对象,需要用到return语句
    函数的传参是引用传参
20、return语句
    return [表达式]    
    []代表可以省略
    如果没有return,函数最后自动加上return None,函数调用返回一个对象的引用    
21、练习:常用的筛素数函数
    #筛出0-a之间的素数,并返回列表
    def ShaiSushu(a):
    if a < 2:
        return None
    l = list()
    l.append(2)
    for i in range(3,a+1):
        flag = 1
        for j in range(0,len(l)):
            if i % l[j] == 0:
                flag = 0
        if flag == 1:
            l.append(i)
    return l
    运行ShaiSushu(100000)时感觉很慢,测了一下时间,运行了56.26162052154541s!!!!!!(不打印)
    What?
    有点汗颜,写了份c++代码,只用了2.005s(不打印)
    
    是谁在网上分析一大堆,说pypy解释器一直在优化性能,有些时候性能能够接近C速度??!
    性能差了30倍!
    看来还是的学好C和C++啊

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表