切片
>>> 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']