【发布时间】:2014-06-17 20:27:34
【问题描述】:
假设我有一个函数,myfunc(*iterables)
我想做以下事情:
myfunc('abc','abc','abc')
但不重复 'abc' 并使用 n(上例中为 =3)
我试过了:
myfunc(['abc']*n)
但是这给了
myfunc(['abc', 'abc', 'abc'])
这不起作用。
有没有简单的方法来做到这一点?
【问题讨论】:
假设我有一个函数,myfunc(*iterables)
我想做以下事情:
myfunc('abc','abc','abc')
但不重复 'abc' 并使用 n(上例中为 =3)
我试过了:
myfunc(['abc']*n)
但是这给了
myfunc(['abc', 'abc', 'abc'])
这不起作用。
有没有简单的方法来做到这一点?
【问题讨论】:
你需要unpack the arguments list,像这样
myfunc(*['abc']*n)
例如,
def myfunc(*iterables):
print iterables
myfunc('abc', 'abc', 'abc') # 3 Arguments
# ('abc', 'abc', 'abc')
myfunc(['abc'] * 3) # 1 Argument with 3 items in it
# (['abc', 'abc', 'abc'],)
myfunc(*['abc'] * 3) # Unpack the 3 element list, to pass 3 arguments
# ('abc', 'abc', 'abc')
【讨论】:
您已将列表转换回参数:
myfunc(*['abc']*n)
【讨论】: