1. 程式人生 > >字典,序列,集合,引用

字典,序列,集合,引用

字典序列集合引用

#-*- coding:utf-8 -*- #------字典-------- '''字典類似於通過聯系人名查找聯系人的詳細信息,即,把鍵(名字)和值(詳細情況)聯系在一起, 鍵必須唯一,只能使用不可變的對象如字符串來作為字典的鍵,但是可以把不可變或者可變對象作為 字典的值。基本說就是應該只使用 ''' #-------練習--------- email = {'張三':'[email protected]', '李四':'[email protected]', '王五':'[email protected]', '二大爺':'[email protected]' }; #下面用In來檢查一個鍵值對是否存在,也可以用has_key if '李四' in email: print("李四的郵件是:"), email['李四']; if email.has_key('李四'): print("李四的郵件是:"), email['李四']; #李四的郵件是: [email protected] print ('二大爺的郵件是:'),email['二大爺']; #二大爺的郵件是: [email protected] print str(email).decode('string_escape'); #{'張三': '[email protected]', '李四': '[email protected]', '二大爺': '[email protected]', '王五': '[email protected]'} #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 ['趙六'] = '[email protected]'; # for name,email in email.items(): # print 'contact %s at %s'%(name,email); for name,email in email.items(): print ('email {0} at {1}'.format(name,email)); ''' contact 李四 at [email protected] contact 二大爺 at [email protected] contact 王五 at [email protected] contact 趙六 at [email protected] 這裏使用字典的items方法,來使用字典中的每個鍵/值對,返回一個元組列表,其中每個元組都包含 一堆項目--鍵與對應的值,抓取這個對,然後分別賦給for..in循環中的變量name和email,再打印 這些值。 ''' #---------------------------------------------------------------------------------------------------------------------------- #------------序列---------- #對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 ''' #----------------引用------------------------------------------------------------------------------------------------------ '''當你創建一個對象並給他賦一個變量的時候,這個變量就是引用的哪個對象,而不是表示這個 對象本身,也就是說,變量名指向你計算機中存儲的那個對象的內存,這杯稱為名稱到對象的綁定 ''' print 'simple example'; 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'; #--這裏是復制list和mylist不指向同一個object mylist = list[:]; 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 '''


字典,序列,集合,引用