zoukankan      html  css  js  c++  java
  • Python(set/list/dict/tuple)

    set集合:
    set是一个无序,不重复元素的集合。可嵌套列表,字典(可以for循环或者迭代的对象)。

    ######差集:
    a={11,22}
    b={22,33}
    c=a.difference(b) #a中存在,b中不存在
    d=b.difference(a) #b中存在,a中不存在
    print(c) -- {11}
    print(d) --{33}
    ####增删
    集合add方法:是把要传入的元素做为一个整个添加到集合中,例如:
    >>> a = set('boy')
    >>> a.add('python')
    >>> a
    set(['y', 'python', 'b', 'o'])
    #####集合update方法:是把要传入的元素拆分,做为个体传入到集合中,例如:
    >>> a = set('boy')
    >>> a.update('python')
    >>> a
    set(['b', 'h', 'o', 'n', 'p', 't', 'y'])
    
    #删除元素
    #随机移除某个元素,没有会报错
    b={11,22,33}
    ret=b.pop()
    print(b)
    
    print(ret)
    #删除一个元素,没有不会报错
    d={1,2,3,4,5}
    d.discard(2)
    print(d)
    
    #接收可以被for循环(可迭代)的对象
    list = [1,2,3,4,5]
    set1={1,2}
    set.update(list)
    print(set1)
    实例:
    找出两个字典变化的值
    old_dict={ "#1":4, "#2":8, "#4":4, }
    new_dict={ "#1":8, "#2":8, "#3":4, #加逗号肯定不会报错,不加可能会有错误 }
    #取值,取出字典的key
    old_key=old_dict.keys() new_key=new_dict.keys()
    #将key转换成集合
    old_set=set(old_key) new_set=set(new_key)
    #新中存在,旧的不存在,打印出需要删除的
    remove=old_set.difference(new_set) print(remove)
    #需要更新的,
    update=new_set.difference(old_set) print(update)
    #需要添加的
    add=old_set.difference(new_set)
    
    set1=set([2,3,4,5])
    set2=set("hello")
    #集合无法通过数字进行索引。
    print(set2)
    #并集,差集,交集和对称差集
    a=set1|set2
    b=set1&set2
    c=set1 - set2
    d=set1 ^ set2
    
    #增删改查
    set1.add('x') #添加一个元素
    set1.update([6,7,8]) #添加多项
    print(set1)
    #测试set1中的每个元是否都在set2中
    set1.issubset(set2)
    set1<=set2
    #测试set2中的每个元是否都在set1中
    set1 >= set2

    列表:list是一种有序的集合,可以随时添加和删除其中的元素。
       用一个变量存储更多的值

    eg: name=['sz','yz','xz']
    num=[1,2,3,4,5,6,7,8,9,1,23,4,5,54,5,5]
    #可以通过下标查找元素,下标从0开始
    >>>num[-1] #-1代表列表中最后一个元素
    >>>5
    >>>num[0] #第一个元素
    >>>1
    >>>num[-3] #取出列表倒数第三个元素
    >>>54 
    ##如果取值的下标超过列表的总长度就会报错 
    ****下标是从0开始
    ###############
    #返回的值是True或false
    print(3 in num)
    #查看列表中有几个5
    print(num.count(5))
    #查看一个元素在列表中的下表,找到第一个值以后,不会继续查找,直接返回第一个值的下表
    print(num.index(5))
    #通过len()内置函数可以查看列表的元素个数
    len(num)

    ####切片

    user=['zhangsan','lisi','liuwu','zhaoliu','wangqi',1,2,3,4]
    #打印出下标2到8的元素
    print(user[2:8])
    print(user[0:3]) #取0到第3个元素,不包含第4个,0可以不写
    print(user[:-3]) #打印从0到倒数第3个元素
    print(user[-3:]) #取最后三个元素
    print(user[::2]) #跨步取值

    ###增删改查

    增加:
    user=['zhangsan','lisi','liuwu','zhaoliu',1,2,1,'wangqi',1,2,3,4]
    user.append("test") #在列表最后追加一个元素
    删除:
    #删除为1的元素,如果有多个1,那么删除从左往右的第一个。
    user.remove(user[1])
    #删除一个内存中的数据,删头不删尾
    del user[3:4]
    
    更改:
    user[1]='coffee' #将第二个元素改为coffee
    user1 = ['a','b','c','d']
    user2 = ['e','f','g','h']
    #插入数据
    user.insert(1,user1) #插入一个数据,下标为1
    user.insert(3,user2) #插入一个数据,下标为3
    #统计
    user.count('1') #统计1元素的个数
    user.sort() #将列表排序
    user.reverse() #将列表反转

    #遍历列表

    for i in user:
    print(i)
    
    #实例 循环更改列表中元素的值
    num = [1,2,3,4,5,3,[3,3,3],6,7,7,8,9,9,9,9,9,5,6,6,6,7]
    #num.count统计列表中这个元素有几个
    #这里有几个,就循环几次
    for i in range(num.count(9)):
    #这里统计每个元素的下表是几
    real = num.index(9)
    #通过下标来更改元素的值
    num[real] = 'HHHHHHHHHHH'
    #打印
    print(num)
    ############################
    实例: 将新列表合并到num列表里
    num = [1,2,3,4,5,3]
    num1 = ['zeng','xian']
    num.extend(num1)
    print(num)

    元组
    另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。
    tuple一旦初始化,就不能更改

    例如
    name=('test','study')
    同样可以通过下标来查询
    name[0]
    name[1]
    如果定义只有1个元素的元组
    t1 = (1) 
    这里就会有歧义,你定义的不是元组,是1这个数,()当成了数学中的括号,所以你在定义一个元素时,后面要加一个逗号。
    t1 = (1,)
    tuple = (1,2,3)
    n1,n2,n3=tuple #把n1,n2,n3分别赋值给元组中的1,2,3个元素
    print(n1,n2,n3)

    字典: 无序,使用键值对存储,具有极快的查找速度。
    dict特点:
    查找和插入的速度极快,不会随着key的增加而变慢;
    需要占用大量的内存,内存浪费多。
    list:
    查找和插入的时间随着元素的增加而增加;
    占用空间小,浪费内存很少。

    info = {'name':'zeng','job':'IT','age':'22'}
    print("查看key为name的value: ",info['name']) #查看key为name的value
    info['job']='devs' #将job的value重新赋值
    info['city']='bj' #如果字典中有city这个key就把对应的value改成bj,如果没有,就创建一个key-value
    info.pop('age') #删除key为age的数据,跟del info['age']一样
    info.popitem() #随机删除一条数据,如果dict为空时,此语法会报错
    info.items() #将dict的key value转换为列表的形式显示
    print(info.get('nme')) #如果字典中存在name这个key,则返回对应的value否则返回None。
    print(info.get('nmna','没有这个key!')) #如果字典中存在name这个key,则返回对应的value否则返回自定义的值
    info.clear() #清空字典
    info.fromkeys([1,2,3],'hehe') #根据列表来创建dict的key,后面hehe是默认的value,不加是None
    info.setdefault('name','nm') #如果字典里存在name这个key,则返回value,否则创建一个叫name的key,并将value设置为nm。
    #用dict2这个字典去更新info,如果存在相同的key,那么使用dict2中的key,如果dict2中的key在info没有。那么创建相应的记录
    dict2={'k':1,'h':2}
    info.update(dict2)
    print(info)

    ####遍历字典的方法

    #1.for循环打印出字典中的key
    for i in info:
    print(i)
    
    #2.首先把字典转换为列表。并把key value值转换为元组,所以你可以在每次循环时赋值两个变量进去。
    c=info.items()
    print(c)
    for a,b in c:
    print(a,b)
  • 相关阅读:
    Python中if __name__ == '__main__':作用
    mac 用macports给python装opencv
    (转)学习&使用技术的四种层次
    图像处理入门,一些简单的基于像素几何变换和实现
    基于水平投影,垂直投影的字符图像分割思路和代码实现
    转:Cannot make a static reference to the non-static解决办法
    BP神经网络学习和c++例子程序代码
    python中初始化一个数组用来存储多张图片
    假期第二周周总结
    假期第一周周总结
  • 原文地址:https://www.cnblogs.com/Z-style/p/5548174.html
Copyright © 2011-2022 走看看