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