接受3个列表参数并返回所有组合的函数[重复]

Posted

技术标签:

【中文标题】接受3个列表参数并返回所有组合的函数[重复]【英文标题】:Function that takes 3 list arguments and returns all the combinations [duplicate] 【发布时间】:2013-08-09 19:23:14 【问题描述】:

我需要帮助在 Python 中提出一个函数,该函数接受 3 个参数,这些参数是列表并且可以返回所有组合。

例如,如果我跑:

shirts = ['white', 'blue']
ties = ['purple', 'yellow']
suits = ['grey', 'blue']
combinations = dress_me(shirts, ties, suits)
for combo in combinations:
    print combo

它会打印如下内容:

('white', 'purple', 'grey')
('white', 'purple', 'blue')
('white', 'yellow', 'grey')
('white', 'yellow', 'blue')
('blue', 'purple', 'grey')
('blue', 'purple', 'blue')
('blue', 'yellow', 'grey')
('blue', 'yellow', 'blue')

【问题讨论】:

我觉得我的回答是对的。 欢迎来到 Stack Overflow。请尽快阅读About 页面。一般来说,避免试图在标题中写下你的整个问题。 @Jonathan:我讨厌有些书呆子会否决这篇文章,我的意思是这个人是新人,让他休息一下——不,你必须阅读 40 页的 EULA,然后在这里发帖。 没有人反对它,尽管它实际上是应得的。 OP刚刚发布了同样的问题。我和其他一些人已经回答了。如果他对答案不满意。他可能会编辑。@MotiurRahman 【参考方案1】:

itertools 来救援。

import itertools

def dress_me(*choices):
  return itertools.product(*choices)

【讨论】:

【参考方案2】:
def dress_me(l1, l2, l3):
    return [(i, j, k) for i in l1 for j in l2 for k in l3]

【讨论】:

【参考方案3】:
def dress_me(l1, l2, l3):
    res = []
    for i in l1:
        for j in l2:
            for k in l3:
                res.append((i, j, k))
    return res

shirts = ['white', 'blue']
ties = ['purple', 'yellow']
suits = ['grey', 'blue']

if __name__ == '__main__':  
    combinations = dress_me(shirts, ties, suits)
    for combo in combinations:
        print(combo)

【讨论】:

非常感谢!这真的很有帮助

以上是关于接受3个列表参数并返回所有组合的函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 n 返回 k 个元素的所有组合的算法

Python。重复元素判定。编写一个函数,接受列表作为参数

编写一个打印所有组合的通用函数。没有递归[重复]

Python:就地操作列表[重复]

创建数组的函数[重复]

从 n 个元素生成长度为 r 的组合而不重复或排列的函数的时间复杂度是多少?