为了账号安全,请及时绑定邮箱和手机立即绑定

如何阅读此代码

如何阅读此代码

侃侃尔雅 2021-03-22 16:10:06
我在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)


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信