#-*- coding:utf-8 -*- #------字典-------- '''字典类似于通过联系人名查找联系人的详细信息,即,把键(名字)和值(详细情况)联系在一起, 键必须唯一,只能使用不可变的对象如字符串来作为字典的键,但是可以把不可变或者可变对象作为 字典的值。基本说就是应该只使用 ''' #-------练习--------- email = {'张三':'123@126.com', '李四':'456@126.com', '王五':'789@126.com', '二大爷':'137@126.com' }; #下面用In来检查一个键值对是否存在,也可以用has_key if '李四' in email: print("李四的邮件是:"), email['李四']; if email.has_key('李四'): print("李四的邮件是:"), email['李四']; #李四的邮件是: 456@126.com print ('二大爷的邮件是:'),email['二大爷']; #二大爷的邮件是: 137@126.com print str(email).decode('string_escape'); #{'张三': '123@126.com', '李四': '456@126.com', '二大爷': '137@126.com', '王五': '789@126.com'} #delete a key-value pair del email ['张三']; print 'there are %d contacts in the email-book'%len(email); print ('there are {0} contacts in the email-dic'.format(len(email))); #there are 3 contacts in the email-book #add a key-value pair email ['赵六'] = '357@qq.com'; for name,emails in email.items(): print 'email %s at %s'%(name,emails); for name,semail in email.items(): print ('email {0} at {1}'.format(name,semail)); if '李四' in email: print("李四的邮件是:"), email['李四']; ''' email 李四 at 456@126.com email 二大爷 at 137@126.com email 王五 at 789@126.com email 赵六 at 357@qq.com 李四的邮件是: 456@126.com 这里使用字典的items方法,来使用字典中的每个键/值对,返回一个元组列表,其中每个元组都包含 一堆项目--键与对应的值,抓取这个对,然后分别赋给for..in循环中的变量name和email,再打印 这些值。 ''' ''' 注意在 for遍历后会如果用email会改变email里的值,再输出李四的邮件会报错,所以我这里用了 semail和emails ''' #---------------------------------------------------------------------------------------------------------------------------- #------------序列---------- #对list进行操作---------- box = ['a','b','c','d','e','f','g']; print ('box:%s')%box; #box:['a', 'b', 'c', 'd', 'e', 'f', 'g'] #取单个项目------------ print('item 0 is:'),box[0]; #item 0 is: a print('item 1 is:'),box[1]; #item 1 is: b print('item -1 is:'),box[-1]; #item 1 is: g 从后往前取 #切片操作----------------- #[start:end]冒号前为起始索引,冒号后为结束索引,包左不包右 print('item 1 to 3 is'),box[1:3]; #item 1 to 3 is ['b', 'c'] print('item 3 to end is:'),box[3:]; #item 3 to end is: ['d', 'e', 'f', 'g'] print('item 4 to -1 is:'),box[4:-1]; #item 4 to -1 is: ['e', 'f'] print('item start to end is:'),box[:]; #item start to end is: ['a', 'b', 'c', 'd', 'e', 'f', 'g'] #--------------对字符串操作--------------------------------------------------------- s='abcdefghijklmn'; print('s.len:%s')%len(s); #s.len:14 print('S:%s')%s; #S:abcdefghijklmn print('s:'),s[1:3]; #s: bc print('s:'),s[4:]; #s: efghijklmn print('s:'),s[6:-2]; #s: ghijkl print('s:'),s[:-11]; #s: abc #-----------切片中的步长[start:end:step],就是切片中的第三个参数step----------------------------------------------------- print s[1:8:2]; #bdfh 由索引为1开始,索引为8结束,步长为2 print s[1:8:3]; #beh '''step 默认为1,可以为负,但不可以为0 step>0 从左向右排列,start必须小于end才有结果; step<0 从右向左排列,start必须大于end才有结果; ''' print s[0:3:]; #abc print s[3:0:-1]; #dcb #-----------集合------------------------------------------------------------------------------------------------------------------ #创建set([1, 2, 3, 4]) cou = set(['usa','india','russia']); print('cou:%s')%cou; #cou:set(['india', 'russia', 'usa']) print 'china' in cou; #False cous = cou.copy(); print('cous:%s')%cous; #cous:set(['india', 'russia', 'usa']) cous.add('china'); print cous.issuperset(cou); #True 检查是否cou的每一个元素都在cous中 print cous>=cou;#True 与上一句等同 cou.remove('india'); print('cou与cous的并集:'),cous.union(cou); #cou与cous的交集: set(['russia', 'usa']) print('cou与cous的交集'),cous.intersection(cou); #cou与cous的交集 set(['russia', 'usa']) print('cous中有但是cou没有'),cous.difference(cou); #cous中有但是cou没有 set(['india', 'china']) print('cou和cous中不重复的'),cous.symmetric_difference(cou);#cou和cous中不重复的 set(['india', 'china']) ''' 也可以这样写 cous.union(cou)---cous|cou cous.intersection(cou)---cous&cou cous.difference(cou)---cous-cou cous.symmetric_difference(cou)---cous^cou ''' #----------------引用------------------------------------------------------------------------------------------------------ '''当你创建一个对象并给他赋一个变量的时候,这个变量就是引用的哪个对象,而不是表示这个 对象本身,也就是说,变量名指向你计算机中存储的那个对象的内存,这杯称为名称到对象的绑定 ''' box = ['apple','orange','banana'] mylist = box; #mylist 是同一个object的另一个名字 del box[0]; #删掉第一个item 如果这样写del mybox 报错 print 'box is:',box; #box is: ['orange', 'banana'] print 'mybox is:',mylist #mybox is: ['orange', 'banana'] #box 和 mylist指向同一个 object list = ['apple','orange','banana']; print 'Copy by making a full slice'; #Copy by making a full slice mylist = list[:];#--这里是复制list和mylist不指向同一个object del mylist[0]; print 'list is:',list; #list is: ['apple', 'orange', 'banana'] print 'mylist is:',mylist; #mylist is: ['orange', 'banana'] '''所以如果想要复制一个列表或者类似的序列,必须使用切片来拷贝,如果使用另一个变量名 两个变量名都引用同一个对象,会造成麻烦。 总结:列表的赋值语句不等于创建拷贝,要使用切片操作符来建立序列的拷贝 ''' #--------一些字符串补充---------------------------------------------------------------------------------- name = 'Moonsky'; #这是一个string object if name.startswith('Mo'): print 'yes,the string starts with \'Mo\''; if 's' in name: print 'yes,it contains the string\'s\''; if name.find('oo')!=-1: print 'yes,it contains the string "oo"'; #如果不返回-1,表示字符串里包含oo country = ['china','us','uk']; delimiter = '-**-'; print(delimiter.join(country)); #str类的一个作为分隔符的字符串序列的项目整洁的方法,返回字符串 ''' 输出 yes,the string starts with 'Mo' yes,it contains the string's' yes,it contains the string "oo" china-**-us-**-uk '''
字典,序列,集合,引用
原创
©著作权归作者所有:来自51CTO博客作者wx57a1883503167的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:list 和 tuple
下一篇:控制流
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python 字典 引用类型 python字典位置引用
Python字典的概念及常见应用实例详解发布时间:2020-09-01 02:问1. 通过 [键] 获得“值”。
python 字典 引用类型 python字典应用场景 键值对 Python 偏移量