在列表理解中省略迭代器?

发布于 2024-09-26 10:02:53 字数 126 浏览 0 评论 0原文

有没有更优雅的方式来编写下面的Python代码?

[foo() for i in range(10)]

我想将 foo() 的结果累积在一个列表中,但我不需要迭代器 i。

Is there a more elegant way to write the following piece of Python?

[foo() for i in range(10)]

I want to accumulate the results of foo() in a list, but I don't need the iterator i.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

过气美图社 2024-10-03 10:02:53

一种方法是使用 _

[foo() for _ in range(10)]

这意味着完全相同的事情,但按照惯例,使用 _ 向读者表明该索引实际上并未使用对于任何事情。

大概 foo() 每次调用它时都会返回不同的内容。如果没有,并且每次都返回相同的内容,那么您可以:

[foo()] * 10

将调用 foo() 一次、10 次的结果复制到列表中。

One way to do this is to use _:

[foo() for _ in range(10)]

This means exactly the same thing, but by convention the use of _ indicates to the reader that the index isn't actually used for anything.

Presumably foo() returns something different every time you call it. If it doesn't, and it returns the same thing each time, then you can:

[foo()] * 10

to replicate the result of calling foo() once, 10 times into a list.

黯然 2024-10-03 10:02:53

如果 foo() 接受一个参数,那么 map 会很好,但它没有。因此,创建一个带有整数参数的虚拟 lambda,但只调用 foo():

map(lambda i:foo(), range(10))

如果您使用的是 Python 3.x,map 返回一个迭代器而不是列表 - 只需用它构造一个列表:

list(map(lambda i:foo(), range(10)))

map would be nice if foo() took an argument, but it doesn't. So instead, create a dummy lambda that takes an integer argument, but just calls foo():

map(lambda i:foo(), range(10))

If you are on Python 3.x, map returns an iterator instead of a list - just construct a list with it:

list(map(lambda i:foo(), range(10)))
迎风吟唱 2024-10-03 10:02:53

绝不是更优雅,但是:

[x() for x in [foo]*10]

我认为除此之外,你还必须使用 Ruby ;)

By no means more elegant, but:

[x() for x in [foo]*10]

I think beyond that you have to go to Ruby ;)

甜嗑 2024-10-03 10:02:53

map(lambda _ : foo(), range(10))

尽管这用一个无意义的迭代器 i 和 lambda 表达式的一个新的无意义参数来交换你的问题。

map(lambda _ : foo(), range(10))

although this trades your problem with a meaningless iterator i with a new meaningless argument to the lambda expression.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文