1.迭代字典
遍历字典中所有关键字,可以像遍历序列一样使用普通的for语句。
s={'x':1,'y':2,'z':3}
for key in s:
print(key,'corresponds to', s[key])
#运算结果
x corresponds to 1
y corresponds to 2
z corresponds to 3
或者使用keys等字典方法来获取所有的键。
若只对值感兴趣,可使用d.values。(d.items以元组的方式返回键-值对)。for循环的优点之一是,可在其中使用序列解包。
2.一些迭代工具
(1)并行迭代
如果想同时迭代两个序列可以如下这么做:
names=['li','mi','bi','vi']
ages=[21,22,23,24]
for i in range(len(names)):
print(names[i],'is',ages[i],'years old')
#运行结果
li is 21 years old
mi is 22 years old
bi is 23 years old
vi is 24 years old
‘i‘ 是用作循环索引的变量的标准名称。
一个很有用的并行迭代工具是内置函数 zip,它将两个序列缝合起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象。若要查看其内容可以使用 list 将其转化为列表。虽然它可以缝合任意数量的序列,但是当最短的序列用完后会停止‘缝合’
names=['li','mi','bi','vi']
ages=[21,22,23,24]
for name, age in list(zip(names,ages)):#这里有无list结果都一样
print(name,'is',age,'years old')
#运行结果
li is 21 years old
mi is 22 years old
bi is 23 years old
vi is 24 years old
(2)迭代时获取索引
有些情况下,需要在迭代对象序列的同时获取当前对象的索引。这时可以使用内置函数enumerate。
(3)反向迭代和排序后再迭代
reversed和sorted
sorted返回一个列表
revered返回一个可迭代对象
但是不能执行索引或切片操作,也不能直接调用列表的方法。若要执行这些操作,可先使用list对返回的对象进行转换。(在for循环,join等方法中使用它,没有任何问题)
>>>sorted([2,7,3,1,6,0,9])
[0, 1, 2, 3, 6, 7, 9]
>>>list(reversed('hello'))
['o', 'l', 'l', 'e', 'h']
3.pass
有时候什么都不用做。在编写代码时,将它用作占位符。
例如:
如果没有pass,这些代码将不能运行。因为Python中代码块不能为空。
if name=='liming':
print('welcome!')
elif name=='limin':
pass
elif name=='lingming':
print('hi')
4.del
删除名称本身,删除到对象的引用
>>>x=["Hello,world"]
>>>y=x
>>>x
['Hello,world']
>>>del x
>>>y
['Hello,world']
5.exec
函数exec把字符串作为代码执行
大多数情况下,还要给它传递命名空间——用于放置变量的地方。
它主要用于动态的创建代码字符串
eval:一个类似于exec的内置函数。exec执行Python语句,而eval计算用表达式表示的Python表达式的值,并返回结果。(exec什么都不返回,因为它本身就是一条语句)
两个函数的相同点: 都需要命名空间。全局命名空间必须是字典,局部命名空间可以是任何映射。