10

在 Python 中,有没有办法在没有“x in”变量的情况下编写这个列表理解(因为它完全未使用)?同样适用于生成器表达式。我怀疑这种情况经常出现,但我偶然发现了几次并且很想知道。

这是一个例子:

week_array = ['']*7
four_weeks = [week_array[:] for x in range(4)]

(也许,有没有更优雅的方式来构建它?)

4

4 回答 4

19

我不相信,而且对x. 以这种方式未使用某个值的常见做法是使用下划线作为自由变量,例如:

[week_array[:] for _ in range(4)]

但这只不过是一种约定,表示自由变量未使用。

于 2012-06-29T11:45:08.703 回答
3

不可以。两个构造都必须有一个迭代器,即使它的值未被使用。

于 2012-06-29T11:43:18.850 回答
1
week_array = ['']*7
four_weeks = map(list, [week_array]*4)
于 2012-06-29T11:54:06.293 回答
0

这与其他答案类似,因为我使用地图,但我所做的使用您正在使用的相同功能。

four_weeks = map(lambda i: week_array[:], range(4))

此外,与使用 example 相比的主要优点_是它可能已经被使用(_被 gettext 经常使用)并且它将其值更改为迭代器中的最后一项。看这个例子:

[x for x in range(4)]
assert x == 3, 'x should be equal to 3'
于 2012-06-29T12:05:26.213 回答