迭代
只要是可迭代对象,无论有无下标,都可以迭代,list / dict 等都可以迭代
判断一个对象是可迭代对象
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
1. 遍历 list
遍历 list 的三种姿势
list = ['html', 'js', 'css', 'python']
方法1:
for i in list:
print ("序号:%s 值:%s" % (list.index(i) + 1, i))
方法2:
for i in range(len(list)):
print ("序号:%s 值:%s" % (i + 1, list[i]))
方法3:
for i, val in enumerate(list):
print ("序号:%s 值:%s" % (i + 1, val))
# 设置遍历开始初始位置,只改变了起始序号
for i, val in enumerate(list, 2):
print ("序号:%s 值:%s" % (i + 1, val))
2. 遍历 dict
遍历 dict 的姿势
d = {'x': 1, 'y': 2, 'z': 3}
遍历 keys 的三种方式
for key in d: print key,
for key in d.iterkeys(): print key,
for key in d.keys(): print key,
遍历 values 的两种方式
for value in d.itervalues(): print value,
for value in d.values(): print value,
遍历 keys 和 values d.iteritems() 是一个迭代器
for key, value in d.iteritems(): # d.iteritems: an iterator over the (key, value) items print key,value
d.items() 是一个 list
for key, value in d.items(): # d.items(): list of d's (key, value) pairs, as 2-tuples # [('y', 2), ('x', 1), ('z', 3)] print key,value
3. 循环多个变量遍历
>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
... print x, y
...
1 1
2 4
3 9