【问题标题】:Is it possible to use iterated values as method argument values?是否可以使用迭代值作为方法参数值?
【发布时间】:2014-09-22 14:19:00
【问题描述】:

我正在使用 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 个产品/排列插入了吗?

如果这似乎是一组愚蠢的问题或有任何不清楚的地方,我们深表歉意。刚从旧堆栈开始,我就被这个问题困住了!

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

    • 谢谢!我使用了你的最后一个建议,效果很好!
    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多