我在Internet上找到了下面的代码,并试图理解它。不确定稍后在循环中为i赋值时如何使用i的值。还要感谢有人可以解释它是如何工作的,即为每次迭代分配回去>>> import pprint>>> ds = dict((chr(i), range(i, i+5)) for i in range(65,70))
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
您正在查看生成器表达式。之前的部分在表达式for定义的循环中执行for。
生成器表达式生成key, value一对对序列,dict()构造函数使用它们来构建字典。您可以将代码读取为具有与以下结果相同的结果:
ds = {}
for i in range(65, 70):
ds[chr(i)], range(i, i+5)
在Python 2.7和Python 3中,您也可以使用dict理解:
ds = {chr(i): range(i, i+5) for i in range(65,70)}
结果将是相同的;您可以定义key: value表达式以从循环中构建字典。
在生成器表达式以及(列表,字典或集合)理解中,您可以使用多个嵌套循环,并添加if语句来过滤数据。这些是按嵌套顺序定义的;最外循环优先:
result = [i ** 2 for foo in range(10) if foo % 2 == 0 for i in range(foo)]
可以理解为:
result = []
for foo in range(10):
if foo % 2 == 0:
for i in range(foo):
result.append(i ** 2)
添加回答
举报
0/150
提交
取消