Python新手在这里。
在学习Python时,我遇到了一些非常好的,简洁的代码,例如:
[d[k] for k in d]
我可以立即看到这些表达式有很多可能性("这些类型"意思包含在[]
中)。
我不确定这种表达式是什么,因此我无法搜索有关如何使用它的信息。对于一些知识渊博的人来说,指导我学习那些讨论这些内容的Python文档或其他资源的部分会很棒,并且可能会提供一些有关如何有效使用它们的建议。
答案 0 :(得分:8)
您发布的代码是表达式,而不是声明。
通常称为list comprehension,其基本结构为:
[item for item in iterable if condition]
其中if condition
子句是可选的。结果是根据iterable
中的项目创建的新列表对象(可能由if condition
过滤):
>>> [x for x in (1, 2, 3)] # Get all items in the tuple (1, 2, 3).
[1, 2, 3]
>>> [x for x in (1, 2, 3) if x % 2] # Only get the items where x % 2 is True.
[1, 3]
>>>
此外,还有dictionary comprehensions:
{key:value for key, value in iterable if condition}
{item for item in iterable if condition}
每个都与列表推导相同,但分别生成字典或集合。
但请注意,您需要使用Python 2.6或更高版本才能使用这些构造。
您应该注意的最后一个工具是generator expression:
(item for item in iterable if condition)
与列表推导类似,它创建了一个生成器对象,可以懒惰地生成它的项目(在需要时一次一个):
>>> (x for x in (1, 2, 3))
<generator object <genexpr> at 0x02811A80>
>>> gen = (x for x in (1, 2, 3))
>>> next(gen) # Advance the generator 1 position.
1
>>> next(gen) # Advance the generator 1 position.
2
>>> next(gen) # Advance the generator 1 position.
3
>>> next(gen) # StopIteration is raised when there are no more items.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>