05 切片、迭代、列表生成

切片

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>> L[0:3]    #取前3個元素

>>> L[:3]

>>> L[1:3]

>>> L[:]

>>> L[::2]   #第三個參數表示每2個元素取一個元素,也就是隔一個取一個 ['Adam','Bart']

>>> range(1, 101)    #創建一個數列[1, 2, 3, ..., 100]

>>> L[-2:]    #['Bart', 'Paul']

>>> L[:-2]    #['Adam', 'Lisa']

>>> L[-4:-1:2]    # ['Adam','Bart']

>>> 'ABCDEFG'[:3]    #'ABC'

>>> 'ABCDEFG'[-3:]    #'EFG'

>>> 'ABCDEFG'[::2]    #'ACEG'

 

迭代

Python的for循環可以作用在任何可迭代對象上。

迭代操作就是對於一個集合,依次取出集合的每一個元素。

1 有序集合:list  tuple  str  unicode

2 無序集合:set

3 無序key-value對:dict

 

在Python中,迭代取出的元素的本身,而不是元素的索引。

索引迭代:

使用enumerate()函數

L = ['Adam', 'Lisa', 'Bart', 'Paul']

for index, name in enumerate(L)

    print index, '-', name

 

實際上,enumerate()函數把 ['Adam', 'Lisa', 'Bart', 'Paul']變成了 [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]。

因此,迭代的每一個元素實際上是一個tuple。

for t in enumerate(L)

    index = t[0]

    name = t[1]

    print index, '-', name

 

zip()函數可以把兩個list變成一個list。

>>> zip([10, 20, 30], ['A', 'B', 'C'])    #[(10, 'A'), (20, 'B'), (30, 'C')]

 

對dict的迭代:

1、直接迭代,每次拿到dict的一個key;

2、調用values()方法,得到dict的values的list;itervalues()方法與values()方法的效果完全一樣。

values()方法實際把一個dict轉換成包含value的list;

itervalues()方法在迭代過程中依次從dict中取出value。

後者比前者省內存。

 

同時對key和value進行迭代:

items()方法和iteritems()方法

for key, value in d.items():

    print key, ':', value

 

列表生成式

>>> range(1, 11)    #[1, 2, 3, ..., 10]

>>> [x*x for x in range(1, 11)]    #[1, 4, 9, ..., 100]

>>> [x*x for x in range(1, 11) if x%2 == 0]

>>> isinstance(x, str)    #判斷x是否爲字符串,字符串的upper()方法可以返回大寫

>>> [m + n for m in 'ABC' for n in '123']    #['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章