Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表理解中省略迭代器?_Python_List Comprehension - Fatal编程技术网

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

Python 在列表理解中省略迭代器?,python,list-comprehension,Python,List Comprehension,有没有更优雅的方法来编写下面的Python [foo() for i in range(10)] 我想将foo()的结果累加到列表中,但我不需要迭代器I。一种方法是使用\u: [foo() for _ in range(10)] 这意味着完全相同的事情,但是按照惯例,使用\uu向读者表明索引实际上没有用于任何事情 大概foo()每次调用时都会返回不同的内容。如果没有,并且每次都返回相同的内容,那么您可以: [foo()] * 10 将调用foo()一次或十次的结果复制到列表中。一点也不优雅

有没有更优雅的方法来编写下面的Python

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

我想将foo()的结果累加到列表中,但我不需要迭代器I。

一种方法是使用
\u

[foo() for _ in range(10)]
这意味着完全相同的事情,但是按照惯例,使用
\uu
向读者表明索引实际上没有用于任何事情

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

[foo()] * 10

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

一点也不优雅,但是:

[x() for x in [foo]*10]
除此之外,我认为你必须去Ruby;)

map(lambda:foo(),范围(10))


虽然这会用一个无意义的迭代器i和一个新的无意义的lambda表达式参数来解决您的问题。

map
如果foo()接受一个参数会很好,但是它没有。因此,创建一个伪lambda,它接受一个整数参数,但只调用foo():

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

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