元组的产物

时间:2016-05-30 03:08:28

标签: python python-2.7

作为一个Python新手,这可能是一个愚蠢的问题,但我找不到解决方案。 我正在做一个元组的产品,并且完美地工作,就像这样:

list = list(itertools.product(["this", "the"],["example", "test"],["is not", "isnt"],[" working", "correct"]))
print(list)

但如果声明另一个变量,它就不再起作用了:

test = ["this", "the"],["example", "test"],["is not", "isnt"],[" working", "correct"]
list = list(itertools.product(test))
print(list)

我使用type()函数检查了这个类,这是一个元组...

我在Python 3.x中运行它,但我想使它与2.7

兼容

1 个答案:

答案 0 :(得分:2)

首先,使用list作为变量名称是不好的,因为这会覆盖默认的list函数。

在您的第一个工作示例中,您将多个参数传递给itertools.product,并将每个参数组合在一起以提供所需的输出。在非工作示例中,您只传递一个参数,即元组test。值得庆幸的是,您可以使用Python的元组解包语法将元组的每个元素扩展为一个参数:

test = ["this", "the"],["example", "test"],["is not", "isnt"],[" working", "correct"]
# The * before test unpacks the tuple into separate arguments
result2 = list(itertools.product(*test))
print(result2)
[('this', 'example', 'is not', ' working'), ('this', 'example', 'is not', 'correct'), ('this', 'example', 'isnt', ' working'), ('this', 'example', 'isnt', 'correct'), ('this', 'test', 'is not', ' working'), ('this', 'test', 'is not', 'correct'), ('this', 'test', 'isnt', ' working'), ('this', 'test', 'isnt', 'correct'), ('the', 'example', 'is not', ' working'), ('the', 'example', 'is not', 'correct'), ('the', 'example', 'isnt', ' working'), ('the', 'example', 'isnt', 'correct'), ('the', 'test', 'is not', ' working'), ('the', 'test', 'is not', 'correct'), ('the', 'test', 'isnt', ' working'), ('the', 'test', 'isnt', 'correct')]