是否可以使用迭代值作为方法参数值?

时间:2014-07-30 19:28:25

标签: loops python-3.x methods iterator arguments

我在Blender和Python 3.x工作。

我想使用迭代值:

list(itertools.product([0,1,2,3], repeat = 3))

>>> [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), ... (3, 3, 2), (3, 3, 3)]

(64个产品/排列总数)并将它们各自的值(一次一组)插入以下方法中:

def vid(h,j,k):
    m = h
    s = j
    b = k

是否可以通过某种形式的循环实现这一点,以便(例如,(0,0,0)可以一次又一次地插入(h,j,k),直到所有64个产品/排列已被插入?

道歉,如果这看起来像是一堆愚蠢的问题,或者以任何方式都不清楚。刚刚开始在这个堆栈上,我宁愿坚持这个问题!

1 个答案:

答案 0 :(得分:1)

如果要在迭代器中捕获vid的返回值,可以使用itertools.starmap

itertools.starmap(vid, itertools.product([0,1,2,3], repeat = 3)))

或(对于列表)您可以在迭代器上调用list,或使用list comprehension

[vid(*tup) for tup in itertools.product([0,1,2,3], repeat = 3)]

如果您只想为每个元组调用vid,可以使用for-loop

for tup in itertools.product([0,1,2,3], repeat = 3):
    vid(*tup)