元組
序列
字元串、清單和元組都是序列
序列的兩個主要特點是索引操作符和切片操作符.
索引操作符讓我們可以從序列中抓取一個特定的項目。
切片操作符讓我們能夠擷取序列的一個切片,即一部分序列。
序列的基本操作:
len() :求序列長度
In [1]: a = '1234;5lasdfasdf'
In [2]: len(a)
Out[2]: 15
+:連接配接2個序列(兩個str)
In [3]: a = 'hello'
In [4]: b = 'world'
In [5]: print a+b
helloworld
In [6]:
*:重複序列元素(*後面根的是int)
In [9]: print a * 3
hellohellohello
In [10]:
in:判斷元素是否在序列中
In [12]: print a
[1, 3, 3, 5]
In [13]: 3 in a
Out[13]: True
max():傳回最大值
In [21]: print a
In [22]: print max(a)
5
min():傳回最小值
n [23]: print min(a)
1
cmp(x,y):比較兩個序列是否相等
In [24]: a
Out[24]: [1, 3, 3, 5]
In [27]: b = [1,3,3,5]
In [28]: cmp (a,b)
Out[28]: 0
In [29]: cmp(a,'1,3,3,5')
Out[29]: -1
In [30]: cmp(a,[1,3,3,5])
Out[30]: 0
In [31]: cmp(a[1],a[2])
Out[31]: 0
In [32]: cmp(a[0],a[3])
Out[32]: -1
In [33]: cmp(a[3],a[2])
Out[33]: 1
In [34]:
元組:
元組和清單十分相似
元組和字元串一樣是不可以變的。
元組可以存儲一系列的值
元組通常用在使用者定義的函數能夠安全地采用一組值的時候,即被使用的元組的值不會改變。
In [34]: t = (1,3,5,'a',(1,))
In [35]: type(t)
Out[35]: tuple
In [36]: print t
(1, 3, 5, 'a', (1,))
In [37]:
元組操作:
元組和字元串一樣屬于序列類型,可以通過索引和切片操作
元組值不可變
無組的拆分
t = (1,2,3)
a,b,c=t
In [150]: t = (1, 3, 5, 'a', (1,))
In [151]: print t
(1, 3, 5, 'a', (1,))
In [39]: t[0]
Out[39]: 1
In [40]: print t
In [41]: t[0] = 2
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-41-29b3302c4f70> in <module>()
----> 1 t[0] = 2
TypeError: 'tuple' object does not support item assignment
In [42]:
元組中引用變量:
In [42]: a
Out[42]: [1, 3, 3, 5]
In [43]: t = (a,'ab')
In [44]: t
Out[44]: ([1, 3, 3, 5], 'ab')
In [45]:
元組切片:
In [45]: first,second = t
In [46]: first
Out[46]: [1, 3, 3, 5]
In [47]: second
Out[47]: 'ab'
In [14]: t
Out[14]: (1, 2, 3)
In [15]: t.index(1)
Out[15]: 0
In [16]: t.index(2)
Out[16]: 1
In [17]: t.index(3)
Out[17]: 2
In [18]: t = (1,3,3,2,5)
In [19]: t.index(5)
Out[19]: 4
In [20]: t.count(3)
Out[20]: 2
In [21]: t.count(5)
Out[21]: 1
清單
清單内可變
清單(list)是處理一組有序項目的資料結構,即要以在清單中存儲一個序列的項目。
清單顯示是可變類型的資料
建立清單:
list1 = []
list2 = [1,3,3,'a']
list3 = list()
In [22]: list1 = []
In [23]: type(list1)
Out[23]: list
In [24]: list
list list1
In [24]: list2 = list()
In [25]: type(list2)
Out[25]: list
In [26]: list
list list1 list2
In [26]: list2
Out[26]: []
In [27]: list
In [27]: list3 = ['a',1,2,(1,),[1,'a']]
In [28]: list3
Out[28]: ['a', 1, 2, (1,), [1, 'a']]
In [29]: len(list3)
Out[29]: 5
In [30]:
In [30]: list3[-1]
Out[30]: [1, 'a']
In [31]: list3[0]
Out[31]: 'a'
In [37]: list3
Out[37]: ['a', 1, 2, (1,), [1, 'a']]
In [38]: list3[0:3]
Out[38]: ['a', 1, 2]
In [40]: list3[0] = 'b'
In [41]: list3
Out[41]: ['b', 1, 2, (1,), [1, 'a']]
清單操作:
取值:
切片和索引
添加:(append()預設加到最後一個元素)
list.append()
In [85]: list3
Out[85]: ['b', [], (1,), 1]
In [86]: list3[1]
Out[86]: []
In [87]: list3[1].append('abc')
In [88]: list3
Out[88]: ['b', ['abc'], (1,), 1]
追加
In [42]: list3.append(333)
In [43]: list3
Out[43]: ['b', 1, 2, (1,), [1, 'a'], 333]
In [44]:
In [44]: list2
Out[44]: []
In [45]: list2 = [1111,222,333]
In [46]: list2 + list3
Out[46]: [1111, 222, 333, 'b', 1, 2, (1,), [1, 'a'], 333]
In [47]:
In [52]: (list2 + list3)*2
Out[52]:
[1111,
222,
333,
'b',
1,
2,
(1,),
[1, 'a'],
1111,
333]
In [53]:
删除
del list[]
list.remove(list[])
In [53]: list2
Out[53]: [1111, 222, 333]
In [54]: del list
list list1 list2 list3
In [54]: del list2[2]
In [55]: list2
Out[55]: [1111, 222]
In [56]: list2.remove(list2[1])
In [57]: list2
Out[57]: [1111]
修改:
list[] = x
In [74]: list2
Out[74]: [1111, 22222, 2223, 22233434, 33434]
In [75]: list2[0] = 0000
In [76]: list2
Out[76]: [0, 22222, 2223, 22233434, 33434]
In [77]: list2
Out[77]: [0, 22222, 2223, 22233434, 33434]
In [78]: list2.insert(1,66666)
In [79]: list2
Out[79]: [0, 66666, 22222, 2223, 22233434, 33434]
In [80]:
查找:
var in list
In [58]: 1 in list2
Out[58]: False
In [59]: 1111 in list2
Out[59]: True
In [60]:
排序:
In [90]: list3
Out[90]: ['b', ['abc'], (1,), 1]
In [91]: list3.sort()
In [92]: list3
Out[92]: [1, ['abc'], 'b', (1,)]
In [93]:
反轉:
In [93]: list3
Out[93]: [1, ['abc'], 'b', (1,)]
In [94]: list3.reverse()
In [95]: list3
Out[95]: [(1,), 'b', ['abc'], 1]
In [96]:
POP預設删除最後一個,pop删除對應位置.
In [103]: list2
Out[103]: [0, 66666, 22222, 2223, 22233434, 33434]
In [104]: list2.pop(1)
Out[104]: 66666
In [105]: list2
Out[105]: [0, 22222, 2223, 22233434, 33434]
In [106]: list2.pop()
Out[106]: 33434
In [107]: list2.pop()
Out[107]: 22233434
In [108]: list2
Out[108]: [0, 22222, 2223]
In [109]:
疊代:
字元串,元組都是可疊代的,都可以通過for循環去通路。
In [120]: list3
Out[120]: ['b', ['abc']]
In [121]: range(5)
Out[121]: [0, 1, 2, 3, 4]
In [122]: list3.extend(range(5))
In [123]: list3
Out[123]: ['b', ['abc'], 0, 1, 2, 3, 4]
In [125]: list3.extend('5555')
In [126]: list3
Out[126]: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5']
In [127]: list3.extend('a')
In [128]: list3
Out[128]: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5', 'a']
In [129]: list3.extend('1234')
In [130]: list3
Out[130]: ['b', ['abc'], 0, 1, 2, 3, 4, '5', '5', '5', '5', 'a', '1', '2', '3', '4']
In [131]:
tab補齊:

python 一切都是對象
幫助:
help(t.index)
Help on built-in function index:
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
(END)
異常:
練習:
現有清單
list1 = ['XXXX', 'b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX']
list2 = ['e', 'f', 'g']
要求對其做以下操作:
1. 取出 ‘XXXX’ 中間的部分,形成一個新的清單list3
In [8]: list1 = ['XXXX', 'b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX']
In [9]: list3 = list1[1:-1]
In [10]: print list3
['b', 3, 'c', 3, '&', 'a', 3, '3', 3, 'aa', '3']
In [11]:
2. 對list3 做一下幾部操作
1)删除特殊符号
In [13]: del list3[4]
In [14]: print list3
['b', 3, 'c', 3, 'a', 3, '3', 3, 'aa', '3']
In [15]:
2)統計 3 在list3中出現的次數
In [17]: list3.count(3)
Out[17]: 4
In [18]:
3)用最簡短的代碼去除list3中 26個字母以外的元素(要求隻能對list3操作)
list3 = list3[0:5:2]
4)對list3排序
In [28]: list3.sort()
In [29]: print list3
Out[29]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c']
5)在末尾追加'd',并把list2追加到list3
In [30]: list3.append('d')
In [31]: print list3
Out[31]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd']
In [32]:
In [46]: list2
Out[46]: ['e', 'f', 'g']
In [48]: list3.append(list2)
In [49]: print list3
Out[49]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g']]
3. 現有兩個變量
a = ('h',)
b = ('h')
1)将a和b分别追加到上一題的list3中,觀察有什麼差別
In [50]: a = ('h',)
In [51]: b = ('h')
In [52]: print list3
Out[52]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g']]
In [53]: list3.append(a)
In [54]: print list3
Out[54]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g'], ('h',)]
In [55]: del list3[-1]
In [56]: print list3
Out[56]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g']]
In [57]: list3.append(b)
In [58]: print list3
Out[58]: [3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g'], 'h']
In [59]:
2)将1生成的list3轉換成元組(擴充:自己搜尋方法)
In [73]: t = (list3,)
In [74]: type(t)
Out[74]: tuple
In [75]: print t
([3, 3, 3, 3, '3', '3', 'a', 'aa', 'b', 'c', 'd', ['e', 'f', 'g'], 'h'],)
3)列印出隻有一個元素'h'的元組,在2中生成的元組中的索引
print tuple(list3).index(h)