天天看點

Python中的元組和清單

元組

序列

    字元串、清單和元組都是序列

    序列的兩個主要特點是索引操作符和切片操作符.

索引操作符讓我們可以從序列中抓取一個特定的項目。

切片操作符讓我們能夠擷取序列的一個切片,即一部分序列。

序列的基本操作:

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中的元組和清單
Python中的元組和清單

python 一切都是對象

Python中的元組和清單
Python中的元組和清單
Python中的元組和清單

幫助:

help(t.index)

Python中的元組和清單

    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)

異常:

Python中的元組和清單
Python中的元組和清單

練習:

    現有清單

    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)