zoukankan      html  css  js  c++  java
  • Python档案袋(列表、元组、字典、集合 )

    列表

    可以同名,有序(通过下标可找到)

    取值:

     1 #声明列表
     2 listx=["L0","L1","L2",33,"L4"]
     3 print(listx) #输出:['L0', 'L1', 'L2', 33, 'L4']
     4 print(len(listx)) #统计总个数,输出:5
     5 print(listx[1]) #下标取值,输出:L1
     6 print(listx[0:2])#切片区间为:[0,2),输出:['L0', 'L1']
     7 print(listx[:2])#输出:['L0', 'L1']
     8 print(listx[-1])#倒数第一个,输出:L4
     9 print(listx.index("L1"))#查找内容的下标,查找到第一个,输出:1
    10 print(listx.count("L4")) #统计值为L4的个数 输出:1

    遍历:

    1 #声明列表
    2 listx=["L0",[11,22,33],"L1"]
    3 
    4 print(type(listx))  #输出类型为:<class 'list'>
    5 
    6 for i in listx:
    7     print(i) #输出:L0  [11, 22, 33]  L1

    修改:

     1 #声明列表
     2 listx=["L0","L1","L1"]
     3 
     4 listx[2]="L1.1" #修改值
     5 listx.append("L2") #追加,结尾添加
     6 listx.insert(1,"L1.0") #插入,参数(位置,内容)
     7 
     8 listx.reverse()#反转
     9 listx.sort()#排序
    10 
    11 print(listx) #输出:['L0', 'L1', 'L1.0', 'L1.1', 'L2']

    删除:

    1 #声明列表
    2 listx=["L0","L1","L2",33,"L4"]
    3 listx.remove("L2") #删除,以内容
    4 del listx[0] #删除,以下标
    5 listx.pop(0) #删除,以下标,默认删除最后一个
    6 
    7 #listx.clear() #清空列表
    8 print(listx) #输出:[33, 'L4']

    利用for循环的列表生成:

    #生成列表,for循环的值传递到前面的算式进行值的修改
    listx=[i*10 for i in range(10)]
    
    print(listx)#输出:[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

    列表排序:

    #排序
    listx=[20,100,66,99,11]
    print(sorted(listx)) #排序,输出:[11, 20, 66, 99, 100]

    列表合并:

    list1=[11,22]
    list2=[99,88]
    
    list1.extend(list2) #扩展
    print(list1) #输出:[11, 22, 99, 88]

    列表的一一对应:

    1 #一 一对应
    2 list1=[11,22,33,88]
    3 list2=["cc","bb","aa","dd"]
    4 res=zip(list1,list2)#变成一个迭代器
    5 print(next(res)) #输出:(11, 'cc')

    字符串与列表的转换:

    函数eval()可以将格式化的字符串转换为列表、字典等数据类型

    1 a="[11,33,55]"
    2 
    3 #转换函数
    4 aa=eval(a)
    5 print(aa[2]) #输出:55
    6 
    7 #进列表转换为字符串
    8 print(type(str(a))) #输出:<class 'str'>

    浅copy,只copy第一层:

     1 #声明列表
     2 listx=["L0",[11,22,33],"L1"]
     3 
     4 list2=listx.copy()#浅copy,只copy第一层
     5 
     6 list2[0]="L0000" #只改自己
     7 list2[1][2]=3333333333 #一改全改
     8 
     9 print(listx)#输出:['L0', [11, 22, 3333333333], 'L1']
    10 print(list2)#输出:['L0000', [11, 22, 3333333333], 'L1']

    深copy,独立分配内存空间

     1 import copy
     2 
     3 #声明列表
     4 listx=["L0",[11,22,33],"L1"]
     5 
     6 list2=copy.deepcopy(listx)#深copy,独立分配内存空间
     7 
     8 list2[0]="L0000" #只改自己
     9 list2[1][2]=3333333333 #只改自己
    10 
    11 print(listx)#输出:['L0', [11, 22, 33], 'L1']
    12 print(list2)#输出:['L0000', [11, 22, 3333333333], 'L1']

     元组:

    值不可更改,值可重复,有序(通过下标可找到)

     1 #声明元组
     2 va=("dongxiaodong","东小东","222","dong","dong",("11",22,33))
     3 
     4 print(type(va))#类型,输出:<class 'tuple'>
     5 
     6 print(len(va)) #总个数,输出:6
     7 
     8 print(va.count("dong")) #统计某个值的个数 输出:2
     9 
    10 print(va.index("dong")) #查询值的下标 输出:3
    11 
    12 print(va[1]) #下标取值,输出:东小东

    字典:

    无序,键不可重复

     1 #创建字典方法1
     2 va={"v1":"111","v2":"222",33:"333"}
     3 
     4 #创建字典方法2
     5 va2=dict.fromkeys(["v1","v2",33],"xxxxx") #创建不同的键对应一个值
     6 print(va2) #输出:{'v1': 'xxxxx', 'v2': 'xxxxx', 33: 'xxxxx'}
     7 
     8 
     9 print(va[33]) #通过键取值,不存在则报错
    10 print(va.get(44)) #存在则返回值,不存在则返回None
    11 
    12 print("v1" in va) #判断键是否存在字典中
    13 
    14 va["v1"]="1x1x1x1" #修改
    15 
    16 va["v3"]="xxxx333333" #添加
    17 
    18 va.update({"v1":"vvvvv11111","v4":"444444"}) #键存在则更新值,键不存在则创建
    19 
    20 print(va.items()) #输出:dict_items([('v1', 'vvvvv11111'), ('v2', '222'), (33, '333'), ('v3', 'xxxx333333'), ('v4', '444444')])
    21 
    22 
    23 
    24 #del va["v2"] #删除某对
    25 #va.pop("v3") #删除某对
    26 
    27 #va.popitem() #随机删除一对,默认删除最后一对
    28 
    29 #del va #删除所有
    30 
    31 print(va) #打印所有
    32 
    33 
    34 #字典循环打印方法1
    35 #效率较高,推荐
    36 #循环键
    37 for i in va:
    38     print(i,va[i])
    39 
    40 #字典循环打印方法2
    41 #循环键值
    42 for k,v in va.items():
    43     print(k,v)

    字典的排序

     1 #排序
     2 a={"5":55555,"2":88888,"32":22222}
     3 
     4 #按键排序,键的数据类型必须一样
     5 #输出:[('2', 88888), ('32', 222222), ('5', 55555)]
     6 print(sorted(a.items()))
     7 
     8 #按值排序,值的数据类型必须一样
     9 #输出:[('32', 22222), ('5', 55555), ('2', 88888)]
    10 print(sorted(a.items(),key=lambda x:x[1]))

    集合

    值不可重复,重复则保留其中一个,无序,因为集合是无序的,所以取值一般都是经过for循环,而不会使用下标取值

     1 listx1=set(["10",10,11,12,12])
     2 print(listx1) #输出:{10, 11, 12, '10'}
     3 
     4 listx2=set([10,100])
     5 
     6 #交集
     7 #方法1:
     8 print(listx1.intersection(listx2)) #输出:{10}
     9 #方法2:
    10 print(listx1 & listx2)#输出:{10}
    11 
    12 #并集
    13 #符号为:|
    14 print(listx1.union(listx2)) #输出:{100, 10, 11, 12, '10'}
    15 
    16 #差集
    17 #符号为: -
    18 # 在listx1中有,但listx2中没有的,参数可有对换
    19 print(listx1.difference(listx2)) #{11, 12, '10'}
    20 
    21 #子集
    22 #listx2w是不是listx1的子集,返回bool
    23 print(listx2.issubset(listx1)) #输出:False
    24 
    25 #父集
    26 #listx1是不是listx2的父集,返回bool
    27 print(listx1.issuperset(listx2)) #输出:False
    28 
    29 #对称差集
    30 #在并集的基础上将两个集合都有的元素去掉
    31 print(listx2 ^ listx1) #输出:{100, 11, 12, '10'}
    32 
    33 listx2.add("dongxiaodong") #添加一项
    34 listx2.update(["dong1","dong2"]) #添加多项
    35 
    36 listx2.remove("dong1") #删除一项,不存在会报错
    37 listx2.discard("dong1")#删除一项,不存在会返回None
    38 
    39 print(len(listx2)) #打印长度
    40 
    41 print(listx2)
  • 相关阅读:
    git 配置免密上传,配置ssh key
    spring @value 为什么没有获取到值
    idea 下maven 导入本地jar,以及导入之后 java不能引用问题
    在git远程仓创建项目之后,提交本地项目的使用方法
    mysql 查询数据库参数命令
    spring Existing transaction found for transaction marked with propagation 'never' 解决
    nginx for ubuntu
    spring中for循环中事务
    面向接口编程详解(一)——思想基础
    实战MEF(5):导出元数据
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/10649603.html
Copyright © 2011-2022 走看看