Python: 什么是...在
Python: What is for ... in
在 Python Cookbook 第三版的第 29 页,作者作了如下声明:
"... might also be done by creating a sequence of tuples and passing them to the dict()
function. For example:
p1 = dict((key, value) for key, value in prices.items() if value > 200)
作者将参数作为 "sequence" 传递给 dict()
构造函数的引用让我有点想知道...... 到底是什么 for ... in ...
?这不是一个表达式吗?不能直接输入 Python 解释器:for x in (1,2,3)
并收到结果吗?例如,list()
的 documentation 表明构造函数需要一个可迭代对象,但我不清楚发生了什么。
p1 = dict((key, value) for key, value in prices.items() if value > 200)
相当于:
p1 = {}
for key,value in prices.items():
if value > 200:
p1.update({key, value})
prices
是 dict
,所以价格、商品会 return 像这样:
dict_items([(key1, value1), (key2, value2)])
dict
可以采用 key/value 对的可迭代来构造一个新实例。表达式
(key, value) for key, value in prices.items() if value > 200
是一个生成器表达式;结果是 generator
类型的值,它(在迭代时)从 prices.items()
中产生那些第二个元素大于 200 的元组。
另一种创建 generator
的方法是使用生成器函数:
def foo(p):
for key, value in p.items():
if value > 200:
yield key, value
d = dict(foo(prices))
在 Python Cookbook 第三版的第 29 页,作者作了如下声明:
"... might also be done by creating a sequence of tuples and passing them to the
dict()
function. For example:
p1 = dict((key, value) for key, value in prices.items() if value > 200)
作者将参数作为 "sequence" 传递给 dict()
构造函数的引用让我有点想知道...... 到底是什么 for ... in ...
?这不是一个表达式吗?不能直接输入 Python 解释器:for x in (1,2,3)
并收到结果吗?例如,list()
的 documentation 表明构造函数需要一个可迭代对象,但我不清楚发生了什么。
p1 = dict((key, value) for key, value in prices.items() if value > 200)
相当于:
p1 = {}
for key,value in prices.items():
if value > 200:
p1.update({key, value})
prices
是 dict
,所以价格、商品会 return 像这样:
dict_items([(key1, value1), (key2, value2)])
dict
可以采用 key/value 对的可迭代来构造一个新实例。表达式
(key, value) for key, value in prices.items() if value > 200
是一个生成器表达式;结果是 generator
类型的值,它(在迭代时)从 prices.items()
中产生那些第二个元素大于 200 的元组。
另一种创建 generator
的方法是使用生成器函数:
def foo(p):
for key, value in p.items():
if value > 200:
yield key, value
d = dict(foo(prices))