作为一个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
兼容答案 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')]