1. 程式人生 > >list 和 tuple

list 和 tuple

list / tuple

#-*- coding:utf-8 -*- # list 和 tuple #list 是一種有序集合,可以隨時添加和刪除漆黑中的元素,如列出班裏所有同學的名字 classmates=['張三','李四','王五']; print classmates; #['\xe5\xbc\xa0\xe4\xb8\x89', '\xe6\x9d\x8e\xe5\x9b\x9b', '\xe7\x8e\x8b\xe4\xba\x94'] #需要將utf-8轉為unicode 用decode('string_escape') print str(classmates).decode('string_escape'); #['張三', '李四', '王五'] listline = ['蘋果','香蕉','橘子','梨']; print ('listline:%s')%str(listline).decode('string_escape'); # listline:['蘋果', '香蕉', '橘子', '梨'] #英文不需要轉 students=['aa','bb','cc']; print 'student:%s'%students; #student:['aa', 'bb', 'cc']; #-----------------------------list練習1---------------------------------- shoplist = ['apple', 'mango', 'carrot', 'banana']; print'I have', len(shoplist), 'items to purchase.'; print ('These items are:') for item in shoplist: print item print 'i also hava to buy rice'; shoplist.append('rice'); print 'my shopping list now',shoplist; print 'i will sort my list now'; shoplist.sort(); print 'sorted shopping list is',shoplist; print 'the first item i will buy is',shoplist[0]; olditem=shoplist[0] del shoplist[0] print 'i bought the',olditem; print 'my shopping list is now',shoplist; # I have 4 items to purchase. '''These items are: apple mango carrot banana''' # i also hava to buy rice # my shopping list now ['apple', 'mango', 'carrot', 'banana', 'rice'] # i will sort my list now # sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice'] # the first item i will buy is apple # i bought the apple # my shopping list is now ['banana', 'carrot', 'mango', 'rice'] '''變量 shoplist 是將要去市場的人的一個購物單。在 shoplist 中,進存儲了各項要 買的東西的名字,但你也可以增加任意類型對象,包括數字甚至列表。 使用了 for...in 循環通過列表中的各項來進行重復。到現在,你一定明白了列表也 是一個序列。序列的特殊性會在後一節討論。 註意 print 函數的 end 關鍵參數來表示以空格結束輸出,而不是通常的換行。 python3 中 print('These items are:', end=' ') for item in shoplist: print(item, end=' ' 輸出These items are: apple mango carrot banana 接下來,用 append 方法來給列表對象增加一項,像前面討論的那樣。然後,通 過簡單地將列表傳送給 print 語句漂亮地將列表的內容輸出,來檢查的確給類表增加 了那一項。 然後,用 sort 方法將列表進行排序。理解這一方法影響了列表本身,沒有返回修 改後的列表是重要的 —— 這與字符串起作用的方式不同。這就是我們所說的列表是 易變的,字符串是不可變的。 接下來,當我們在市場買完了一項時,我們想將其從列表中移去。用 del 語句來 實現。這兒,我們提到了想要從列表中移去那一項,用 del 語句將其移除。指定想要 移除列表中的第一項因此用 del shoplist[0](記住,Python 中從 0 開始計算)。 如果想知道通過列表對象定義的所有方法,用 help(list) 獲取更多細節。''' #-------------------------list練習2---------------------------------- stu=['a','z','y','d']; print (u'學生:%s')%stu; #學生:['a', 'z', 'y', 'd'] ''' 1.獲取list元素的個數 2.用索引訪問stu中第三個元素 3.用索引訪問stu中倒數第一個元素 4.網stu中末尾加入學生h 5.將學生f插入到索引為1的位置 6.刪掉stu末尾的元素 7.刪掉索引為1的元素 8.將第索引為2的元素替換為w 9.對stu進行排序 ''' #1--- print len(stu); #4 #2--- print stu[2]; #y #3-- print stu[-1]; #d #4-- stu.append('h'); print (u'學生:%s')%stu; #學生:['a', 'z', 'y', 'd', 'h'] #5-- stu.insert(1,'f'); print (u'學生:%s')%stu; #學生:['a', 'f', 'z', 'y', 'd', 'h'] #6-- stu.pop() print (u'學生:%s')%stu; #學生:['a', 'f', 'z', 'y', 'd'] #7-- '''print stu.pop(1) #f print (u'學生:%s')%stu #學生:['a', 'z', 'y', 'd']''' del stu[1]; print (u'學生:%s')%stu; #學生:['a', 'z', 'y', 'd'] '''del xx[]與xx.pop()的區別 pop返回的是刪掉的數值,在其前面加print會看的更直觀 del []是根據索引刪除集合裏的數值 ''' #8-- stu[2]='w'; print (u'學生:%s')%stu; #學生:['a', 'z', 'w', 'd'] #9-- stu.sort(); print (u'學生:%s')%stu; #學生:['a', 'd', 'w', 'z'] #--------補充------------ #list 裏面的元素的數據類型也可以不同 box = ['Apple',123,True,'二大爺']; print('box:%s')%str(box).decode('string_escape') #box:['Apple', 123, True, '二大爺'] #list 元素的也可以是另一個list box=['python',123,['二大爺',True],'java']; print ('box:%s')%str(box).decode('string_escape'); #box:['python', 123, ['二大爺', True], 'java'] print ('box長度:'),len(box); #box長度: 4 '''box裏有四個元素,可以拆開理解 b1 = ['二大爺',True] b2 = ['python',123,b1,'java'] 要拿到'二大爺'可以寫成b1[0]或者b2[2][0] 因此box可以看成一個二維數組,類似得還有三維,思維...數組,不過很少用 ''' #如果一個list中什麽也沒有,就是一個空list,長度是0 box=[] print('box長度:'),len(box) #box長度: 0 #--------------------------------------------------------------- #--------------------------------------------------------------- #------tuple--元組 #tuple和list很類似,但是tuple一旦初始化就不能修改 stus = ('bb','aa','cc'); print ('學生:'),stus; #學生: ('bb', 'aa', 'cc') '''stus為tuple不能改變,它沒有append(),insert()...等方法,其獲取元素的方式和list 一樣,能夠正常的使用stu[1],stu[-1],但是不能賦值 不可變tuple的意義:因為tuple 不可變,所以代碼更安全,如果可能,盡量用tuple代替list ''' #-------------------------------------- #定義tuple時,tuple元素就必須被確定,定義空tuple,可以寫成() box = (1,2,3); print ('box:'),box #box: (1, 2, 3); box = (); print ('box:'),box; #box: () '''當定義只有一個元素的tuple,如果這麽定義就是錯的 box = (1) print box 此時定義的不是tuple,而是1這個數字,因為()既可以表示tuple也可以表示數學公式中的 小括號,等價於 temp=1 print temp 所以只有一個元素的tuple定義時必須加逗號,來消除歧義 ''' box = (1,); print ('box:'),box; #box: (1,) #---------------可變的box box = ('a','b','c',['d','e']); print('box:'),box; #box: ('a', 'b', 'c', ['d', 'e']); box[3][0] = '二大爺'; print('box:'),str(box).decode('string_escape'); #box: ('a', 'b', 'c', ['二大爺', 'e']) #此時改變的是list,並不是tuple #----------------------------------tuple練習------------------------------- zoo = ('wolf','elephant','dog'); print 'number of animals in the zoo is',len(zoo); new_zoo = ('monkey','dolphin',zoo); print 'number of animals in the new_zoo is',len(new_zoo); print 'all animals in the new_zoo are:',new_zoo; print 'animals brought from old zoo are:',new_zoo[2]; print 'last animal brought ftom old zoo is:',new_zoo[2][2]; ''' number of animals in the zoo is 3 number of animals in the new_zoo is 3 all animals in the new_zoo are: ('monkey', 'dolphin', ('wolf', 'elephant', 'dog')) animals brought from old zoo are: ('wolf', 'elephant', 'dog') last animal brought ftom old zoo is: dog ''' ''' 變量 zoo 是一個元組,我們看到 len 函數可以用來獲取元組的長度。這也表明元 組也是一個序列。 由於老動物園關閉了,我們把動物轉移到新動物園。因此,new_zoo 元組包含了 一些已經在那裏的動物和從老動物園帶過來的動物。回到話題,註意元組之內的元組 不會失去它的特性。 我們可以通過一對方括號來指明某個項目的位置從而來訪問元組中的項目,就像 我們對列表的用法一樣。這被稱作索引運算符。我們使用 new_zoo[2] 來訪問 new_zoo 中的第三個項目。我們使用 new_zoo[2][2] 來訪問 new_zoo 元組的第三個項目的第三 個項目。 '''



list 和 tuple