Python中的集合类型.
1.list_option.py
2.listsplit_option.py
3. dic_option.py
4.iter_option.py
1.list_option.py
1 # coding=utf8 2 __author__ = 'SummerChill' 3 #list 有序的列表、元素可以是不同类型的,元素值可以重复 4 5 #list的初始化 6 l=list() 7 l=[] 8 l=[1,2,3,'crxy',[1,2,3]] 9 l=['a','b','c','d','b','b','e'] 10 11 #增加元素 12 #追加元素list的末尾 13 l.append('new') 14 #添加元素到指定的索引位置 15 l.insert(2,'Two') 16 17 #删除元素 18 #根据索引删除 如果索引缺省则会删除末尾的元素 19 l.pop() 20 l.pop(1) 21 #根据value删除 只会删除第一个出现的value为'b'的元素 22 l.remove('b') 23 24 #修改元素 25 l[3]='Three' 26 27 #查询 如果index为整数表示索引,如果是负数表示取倒数第几个 28 # print(l[2]) 29 # print(l[-2]) 30 31 # 最终打印的结果 32 # c 33 # b 34 35 #tuple 元组 和list类似 只是一旦初始化在不能修改 只能查询和遍历 36 #主要用作函数的返回值 37 t=() 38 t=tuple() 39 t=(1,2,3,'a','b') 40 41 #t[1]='new' #NO!!!!! 42 # TypeError: 'tuple' object does not support item assignment 43 44 # print(t[1]) 45 # print(t[-1]) 46 47 48 #########字符串的操作返回一个副本 49 data='str' 50 result=data.upper() 51 print(data,result)#('str', 'STR') 52 53 #########list的操作作用在list本身 54 l=[1,2,3] 55 result=l.append(4) 56 print(l,result)#([1, 2, 3, 4], None)#返回None说明append没有返回值 57 ############################################### 58 59 print(l) 60 #拓展list 在list的尾部扩展增加新的集合 61 l.extend(['as','s','a','b']) 62 print(l)#[1, 2, 3, 4, 'as', 's', 'a', 'b'] 63 64 #统计list中某个元素的出现的次数 65 print(l.count('a'))#1 66 #统计list中某个元素的出现的index 返回第一个匹配的元素的索引 67 print(l.index('a'))#6 68 69 #指定区间的查找 start stop 包含start 不包含stop 70 #查不到报错不在list中。 71 #print(l.index('a',2,5))#ValueError: 'a' is not in list 72 print(l.index('a',2,9))#6 73 74 #反转 倒叙排列 75 l.reverse() 76 print(l)#['b', 'a', 's', 'as', 4, 3, 2, 1] 77 l.sort() 78 print(l)#[1, 2, 3, 4, 'a', 'as', 'b', 's'] 79 80 81 #排序需求:按照元素的长度来排序 82 #通过key指定的函数来查找要排序的依据。key_fun(item) 83 #将key_fun(item)的返回值,传入 cmp_fun(x,y) 进行比较并排序。 84 #cmp_fun(x,y)返回值决定了排序的位置。如果 cmp_fun(x1 ,x2) <0 x1排在x2的前面。 85 l=['b','a','c','one','two','three','four'] 86 def key_fun(item): 87 return len(item) 88 #如果item是int类型的,是不能调用len()方法的. 89 #TypeError: object of type 'int' has no len() 90 91 def cmp_fun(x,y): 92 return x-y 93 94 #自定义排序 95 l.sort(key=key_fun,cmp=cmp_fun) 96 print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three'] 97 98 #lamda表达式 起到了函数速写的功能,允许在代码内嵌入一个函数的定义。类似于匿名函数 99 l.sort(key=lambda item:len(item),cmp=lambda x,y:x-y) 100 print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three'] 101 102 t=('a','b','c','a') 103 #count value的出现次数 104 print(t.count('a')) 105 # 查找tuple中value的index 如果不存在则报错 ValueError: tuple.index(x): x not in tuple 106 print(t.index('c'))
2.listsplit_option.py
1 # coding=utf8 2 __author__ = 'SummerChill' 3 4 #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n; 5 #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。 6 7 l=['a','b','c','d','e','f','g'] 8 9 #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n; 10 print(l[1:5])#['b', 'c', 'd', 'e'] 11 #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。 12 print(l[1:5:3])#['b', 'e'] 13 14 # m n p 可以为负数 15 #m、n为负数表示倒数第几个 前面包含后面不包含 16 print(l[-5:-1])#['c', 'd', 'e', 'f'] 17 #p<0 从尾部向首部取元素 18 print(l[5:1:-1])#['f', 'e', 'd', 'c'] 19 20 print(l[-1:-4:-2])#['g', 'e'] 21 22 #m n p 可以缺省 23 #m不写从头开始取 n不写取到尾部 p不写默认为1 24 print(l[::])#['a', 'b', 'c', 'd', 'e', 'f', 'g'] 25 print(l[:5:2])#['a', 'c', 'e'] 26 print(l[1::2])#['b', 'd', 'f'] 27 print(l[1:5])#['b', 'c', 'd', 'e'] 28 print(l[5:1])#[]
3. dic_option.py
1 # coding=utf8 2 __author__ = 'SummerChill' 3 4 #初始化字典 5 dic=dict() 6 dic={'a':'A','b':'B','c':'C'} 7 8 #增加和修改 9 dic['c']='New' 10 dic['d']='D' 11 #删除指定的key 12 dic.pop('b') 13 print(dic)#{'a': 'A', 'c': 'New', 'd': 'D'} 14 15 #查询 dic['g'] 如果key不存在则会报错 dic.get(key,defaultvalue) 16 #如果有默认值在key不存在的情况下会返回默认值 17 #print(dic['g'])#报错 KeyError: 'g' 18 19 print(dic.get('g','defalut'))#defalut 20 print(dic.get('a','defalut'))#A 21 print(dic.get('g'))#None 22 23 #判断是否包含key 24 print(dic.has_key('g'))#False 25 26 #list中的元素为tuple类型。 27 print(dic.items())#[('a', 'A'), ('c', 'New'), ('d', 'D')] 28 #list 其中的元素就是key或者value本身 29 print(dic.keys())#['a', 'c', 'd'] 30 print(dic.values())#['A', 'New', 'D'] 31 32 ##############set 元素不能重复 重复的会自动过滤 33 s=set() 34 s=set([1,2,3,4,1,2,3]) 35 print(s)#set([1, 2, 3, 4]) 36 37 #增加元素 38 s.add(6) 39 #删除元素 40 s.remove(2) 41 42 43 #print(s[1]) NO !!!!!!!!!!!!! 44 # 'set' object does not support indexing 45 46 #想把2改为6 分两步 47 # s.remove(2) s.add(6) 48 print(s)#set([1, 3, 4, 6]) 49 #set 转为list 50 l=list(s) 51 print(l)#[1, 3, 4, 6] 52 #list 转为set 53 s=set(l) 54 print(s)#set([1, 3, 4, 6]) 55 56 #遍历set的元素 57 for i in s: 58 print(i)# 1 3 4 6 59 60 s.clear()
4.iter_option.py
1 # coding=utf8 2 __author__ = 'SummerChill' 3 4 sl=[1,2,3] 5 sd={'a':'A','b':'B'} 6 7 #列表生成式 从一个或者多个集合中遍历得到元素然后再筛选计算得到一个新的list 8 #for if 9 #sl中元素分别平方组成新的元素 10 l=[x*x for x in sl if x%2==0] 11 print(l)#[4] 12 l2=[x*x for x in sl] 13 print(l2)#[1, 4, 9] 14 #sd 里面的key和value组合成一个list。key value组合['a A','b B'] 15 l=[ k+' '+v for k,v in sd.items()] 16 print(l)#['a A', 'b B'] 17 print(sd.items())#[('a', 'A'), ('b', 'B')] 18 19 #复合循环 20 l=[x*y for x in sl for y in sl if x+y>=3] 21 print(l)#[2, 3, 2, 4, 6, 3, 6, 9] 22 23 l=[x*x for x in [1,2,3,4,5,6]] 24 print(l)#[1, 4, 9, 16, 25, 36] 25 26 ###列表生成器 并没有生成一个列表 27 g=(x*x for x in [1,2,3,4,5,6]) 28 #用next(g) 读取生成器的元素 但是如果遍历到末尾再查询会报错 29 #print(next(g))#1 30 #print(next(g))#4 31 #print(next(g))#9 32 #print(next(g))#16 33 #print(next(g))#25 34 #print(next(g))#36 35 #print(next(g))#到这个地方报错...g中的元素都找完了. 36 37 for i in g: 38 print(i) # 1 4 9 16 25 36 39 40 41 l=[1,2,3] 42 t=(1,2,3) 43 d={'a':'A','b':'B'} 44 s=set([1,2,3]) 45 46 #默认的遍历 47 #遍历元素本身 48 for i in l: 49 print(i)#1 2 3 50 for i in t: 51 print(i)#1 2 3 52 for i in s: 53 print(i)#1 2 3 54 #对于字典 默认遍历的是key 55 for i in d: 56 print(i)#a b 57 58 59 60 for k,v in d.items(): 61 print(k,v)#('a', 'A') ('b', 'B') 62 for k in d.keys(): 63 print(k)#a b 64 for v in d.values(): 65 print(v)#A B 66 ############################### 67 #迭代 68 #dict 69 # d.iteritems() 70 # d.iterkeys() 71 # d.itervalues() 72 for k ,v in d.iteritems(): 73 print(k,v)#('a', 'A') ('b', 'B') 74 for k in d.iterkeys(): 75 print(k)#a b 76 for v in d.itervalues(): 77 print(v)#A B 78 79 80 ##其他的集合:使用iter函数构造一个迭代器 81 print(l)#[1, 2, 3] 82 for i in iter(l): 83 print(i)#1 2 3 84 85 print(t)#(1, 2, 3) 86 for i in iter(t): 87 print(i)#1 2 3 88 89 print(s)#set([1, 2, 3]) 90 for i in iter(s): 91 print(i)#1 2 3 92 93 #遍历时候加上索引 通过enumerate 94 print(l)#[1, 2, 3] 95 for i,v in enumerate(l): 96 print(i,v)#(0, 1) (1, 2) (2, 3) 97 98 print(t)#(1, 2, 3) 99 for i,v in enumerate(t): 100 print(i,v)#(0, 1) (1, 2) (2, 3) 101 102 print(s)#set([1, 2, 3]) 103 for i,v in enumerate(s): 104 print(i,v)#(0, 1) (1, 2) (2, 3) 105 106 #dict 遍历的是key 107 print(d)#{'a': 'A', 'b': 'B'} 108 for i,k in enumerate(d): 109 print(i,k,d.get(k))#(0, 'a', 'A') (1, 'b', 'B') 110 111 #for i in range(10)类似与for(int i=0;i<10;i++;)
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5931104.html,如需转载请自行联系原作者