迭代和pass、del、exec。

迭代字典与工具和pass、del、exec。

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什么都不返回,因为它本身就是一条语句)
两个函数的相同点: 都需要命名空间。全局命名空间必须是字典,局部命名空间可以是任何映射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值