>>> ds = dict((chr(i), range(i, i+5)) for i in range(65,70))
侃侃尔雅
浏览 232回答 3
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)