05 切片、迭代、列表生成

来源:互联网 发布:mac 液体唇膏 试色 编辑:程序博客网 时间:2024/05/22 14:31

切片

>>> 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的lsit;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']



0 0
原创粉丝点击