python列表、元组、字典、集合的简单

发布时间:2019-03-03 10:38:16编辑:auto阅读(2127)

    一、列表、元组

    1、常用操作函数


     1 #Author:CGQ
     2 import copy
     3 #列表
     4 '''
     5 names=["ZhangYang","XiaoHei","XiaoHei","LiSan"]
     6 print(names[0])#某一个
     7 #切片
     8 print(names[1:3])
     9 print(names[0:-1:2])#2代表步长
    10 print(names[-1])
    11 print(names[-2:])
    12 len(names)#字符串长度
    13 print(names[names.index("ZhangYang")])#输出原文和位置信息
    14 names.append("DaKaiZi")#追加最后
    15 names.insert(1,"GuYun")#追加到某位置
    16 names.extend("GuYun")#迭代添加
    17 names[2] = "XieDi"#替换
    18 names[:2] = "ni"
    19 names[:2] = "ni43243"#迭代替换
    20 names[:2] = [4,3,2,4,3]#迭代替换
    21 #删除
    22 names.remove("XieDi")#按元素删
    23 del names[2]#按序号删
    24 del names#删除names
    25 names.pop(2)#按序号删
    26 n1 = names.pop(2)#删除并返回删除值(默认删除最后一个)
    27 names.clear()#清空
    28 names.reverse()#反转
    29 names.sort()#排序(字母顺序,符号》数字》大写》小写)
    30 names.sort(reverse=True)#反向排序(字母顺序,符号》数字》大写》小写)
    31 names2=[1,2,3,4]
    32 names.extend(names2)#链接
    33 del names2#删变量
    34 '''
    35 '''
    36 names=["ZhangYang","XiaoHei",["CGQ","DaWang"],"XiaoHei","LiSan"]
    37 #复制第一层
    38 #names2=names.copy()
    39 #names2=names[:]
    40 #names2=list(names)
    41 #names2=names#指针指向name2,没有新建(针对列表,字符、字符串是新建【真正的复制】)
    42 names2=copy.deepcopy(names)#完全复制
    43 names[2][0]="cgq"
    44 #print(names,names2)
    45 for i in names:
    46     print(i)
    47 '''
    48 #元组
    49 # name=("LiSi","WangWu")#不能修改
    50 # print(name.index("LiSi"))
    51 
    52 NAME = (1,2,[1,'SDFAS'],'jgjhgj')#其中列表可以修改
    53 # NAME[2][1] = NAME[2][1].lower()
    54 # print(NAME)
    55 
    56 # s = 'safsadf'
    57 # s1 = '_'.join(s)#用'_'相连接,返回字符串
    58 # print(s1)
    59 #range   [......1,2,3........]
    60 # for i in range(-20,20,2):
    61 #     print(i)

    #列表和元组、字典都可以解包
    a,b=(1,2)
    print(a,b)
    a,b=['1','2']
    print(a,b)

    2、循环

     1 #Author:CGQ
     2 #删除奇数位元素
     3 lis = [11, 22, 33, 44, 55, 6, 7, 8, 9]
     4 #方法一
     5 # count = 0
     6 # for i in lis:
     7 #     if count%2 == 1:
     8 #         print(lis.index(i))
     9 #         del lis[lis.index(i)]
    10 #         count-=1
    11 #     count+=1
    12 #方法二
    13 lis1 = []
    14 for i in range(len(lis)):#len[lis]#整个循环中其值不变,为9
    15     if i%2 == 1:
    16         lis1.append(lis[i])
    17 i = len(lis1)
    18 cont = 0
    19 while i-cont:
    20     lis.remove(lis1[cont])
    21     cont+=1
    22 print(lis)

        列表在循环时如果进行删除/增加操作,循环中列表元素也会减少/增加

    二、字典

    1、常用操作函数

      1 #Author:CGQ
      2 #key-value
      3 #版本3.6以后dica字典是有序的
      4 info={
      5     '123456':"Ren Gong",
      6     '123457':"Luan Gong",
      7     '123458':"Xiao Gong",
      8 }
      9 info_a={
     10     '123456':"Ren",
     11     '1':"Luan",
     12     '12':"Gong",
     13 }
     14 #b=dict.fromkeys([6,7,8],"test")#创建一个新的字典,但其中的3个test其实是一个(同一地址)
     15 #info.update(info_a)#更新info,没有的添加,有的修改
     16 #print(info.items())#把字典转换成列表
     17 #循环
     18 for i in info.values():#打印value
     19     print(i)
     20 for i in info:#高效(与for i in inf.keys()一样)
     21     print(i,info[i])
     22 for k,v in info.items():#转换成列表后循环
     23     print(k,v)
     24 '''
     25 print(info)
     26 #print(info['123456'])#提取索引为123456的数据
     27 #修改或添加
     28 info['123456']="人工"#增加(字典中无该key)
     29 info.setdefault('12345610','afasd')#增加(如果有该key,不做任何操作)
     30 info['123459']="大河"#修改(字典中有该key)
     31 #del info['123456']#删除该条数据
     32 #info.pop("123456")#删除该条数据,有返回值
     33 print(info.pop('1234561321','没有此数据'))#如没有该key,则返回'没有此数据'
     34 #info.popitem()#随机删一条数据,返回删除数据(元组)
     35 #info.clear()#清空字典
     36 print(info.get('12345'))#安全的查找方法,查不到输出None
     37 print(info.get('12345','没有'))#安全的查找方法,查不到输出  没有
     38 print(info)
     39 print('12345' in info)#找到输出true,找不到输出false
     40 #info.has_key("1103")2.x版本的写法^上
     41 '''
     42 ''''''
     43 #del info#删除变量
     44 av_catalog = {
     45     "欧美":{
     46         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
     47         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
     48         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
     49         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
     50     },
     51     "日韩":{
     52         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
     53     },
     54     "大陆":{
     55         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
     56     }
     57 }
     58 av_catalog["大陆"]["1024"][1]="可以在国内做镜像"
     59 print(av_catalog.values())#打印除values所有的值
     60 print(av_catalog.keys())#打印所有的keys值
     61 print(av_catalog.items())#打印所有的keys,values值
     62 av_catalog.setdefault("台湾",{"www":["watifak",2]})
     63 print(av_catalog)
     64 
     65 
     66 # = 赋值 == 比较值是否相等   is 比较,比较的是内存地址  id(内存地址的内容)
     67 li1 = [1,2,3]
     68 li2 = li1
     69 li3 = li2
     70 print(id(li1),id(li2))#指向同一个内存地址
     71 
     72 #数字,字符串 小数据池
     73 #数字的范围 -5 -- 256
     74 #字符串:1,不能有特殊字符
     75 #        2,s(一个字符)*20 还是同一个地址,s*21以后都是两个地址
     76 # i1 = 6
     77 # i2 = 6
     78 # print(id(i1),id(i2))#指向同一个内存地址
     79 # i1 = 300
     80 # i2 = 300
     81 # print(id(i1),id(i2))#指向同一个内存地址
     82 
     83 #剩下的 list dict tuple set
     84 # l1 = [1,]
     85 # l2 = [1,]
     86 # print(l1 is l2)#指向非同一个内存地址
     87 
     88 
     89 # s = 'alex'
     90 # s1 = b'alex'
     91 # print(s,type(s))
     92 # print(s1,type(s1))
     93 
     94 # s = '中国'
     95 # print(s,type(s))
     96 # s1 = b'中国'
     97 # print(s1,type(s1))
     98 
     99 s1 = 'alex'
    100 # encode 编码,如何将str --> bytes, ()
    101 s11 = s1.encode('utf-8')
    102 s11 = s1.encode('gbk')
    103 print(s11)
    104 s2 = '中国'
    105 s22 = s2.encode('utf-8')
    106 s22 = s2.encode('gbk')
    107 print(s22)
    View Code

    2、循环

     1 删除带k的元素
     2  dic = {'k1':'v1','k2':'v2','a3':'v3'}
     3 #方法一
     4 # dic1 = {}
     5 # for i in dic:
     6 #     if 'k' not in i:
     7 #         dic1.setdefault(i,dic[i])
     8 # dic = dic1
     9 # print(dic)
    10 方法二
    11  l = []
    12  for i in dic:
    13      if 'k' in i:
    14          l.append(i)
    15  for i in l:
    16      del dic[i]
    17  print(dic)

    字典在循环时不可进行删除操作,用上述方法进行删除

    三、集合

    #Author:CGQ
    '''
    集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
         {}
    '''
    # set1 = set({1,2,3})
    # set1 = {'alex','wusir','ritian','egon','barry',}
    # set2 = {1,2,3,[2,3],{'name':'alex'}}  # 错的
    lieXi_1=[3,2,2,9]
    lieXi_2=set([0,36,3,99])
    lieXi_1=set(lieXi_1)
    print(lieXi_1,type(lieXi_1))
    #交集
    print(lieXi_1 & lieXi_2)
    print(lieXi_1.intersection(lieXi_2))
    #并集
    print(lieXi_1 | lieXi_2)
    print(lieXi_1.union(lieXi_2))
    #lieXi_1-lieXi_2(差)
    print(lieXi_1 - lieXi_2)
    print(lieXi_1.difference(lieXi_2))
    #子集(是否包含)
    print(lieXi_1.issubset(lieXi_2))
    #是否被包含
    print(lieXi_1.issuperset(lieXi_2))
    #对称差集(并集-交集)
    print(lieXi_1 ^ lieXi_2)
    print(lieXi_1.symmetric_difference(lieXi_2))
    
    
    lieXi_1.add(98)#添加
    lieXi_1.update([111,416])#添加多个
    lieXi_1.remove(98)#删除
    print(len(lieXi_1))#长度
    print(98 in lieXi_1)#测试98是否是lieXi_1的成员
    #print(lieXi_1.pop())#随机删除并返回删除值
    print(lieXi_1.discard('KJ'))#删除指定值,没有返回None(不报错),成功无提示
    
    #{} set()
    # set1.clear()
    # print(set1)  # set()
    
    # del set1#直接删除变量
    # print(set1)#已删除此集合
    
    #
    # for i in set1:
    View Code
    #将集合(set)类型转换为frozenset类型;由不可变类型转化为可变类型
    s1 = {1, 2, 3}
    print(s1,type(s1))
    s = frozenset(s1)
    print(s,type(s))

     

关键字