通过重复应用功能创建列表

Man*_*nav 11 python list

我要这个:

[foo() for _ in xrange (100)]
Run Code Online (Sandbox Code Playgroud)

但更漂亮.?

kin*_*all 8

你可以这样编写一个生成器repeat:

def repeat(times, func, *args, **kwargs):
    for _ in xrange(times):
        yield func(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

然后:

list(repeat(100, foo))
Run Code Online (Sandbox Code Playgroud)

它还接受要传递给函数的参数,因此您可以:

from random import randint
list(repeat(100, randint, 1, 100))   # 100 random ints between 1 and 100
Run Code Online (Sandbox Code Playgroud)

因为它是一个生成器,你可以将它管道化为任何类型的迭代,无论是list(如此处)还是a tuple或a set,或者在理解或循环中使用它.


Fre*_*Foo 5

恐怕你不会得到它比Python中的任何漂亮,但有些人会建议对_一个"匿名"的变量.这是Python的成语做你想要什么.

(该_可被视为混乱新手,因为它可以被误认为是特殊的语法.我用它,但只是在我的代码的"专家部分".我也遇到它越来越频繁,但舆论还是显得有点分歧这个.)