这是代码:
L2 = ['+', '-', '*', '/']
combi_operation = [0, 0, 0, 0]
combi2 = []
for x in L2:
combi_operation[0] = x
for y in L2:
combi_operation[1] = y
for z in L2:
combi_operation[2] = z
for w in L2:
combi_operation[3] = w
combi2.append(combi_operation)
这是最后的combi2的值:
[['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ['/', '/', '/', '/'], ...]
当我创建一行打印combi_operation的代码时:
combi_operation = [0, 0, 0, 0]
combi2 = []
for x in L2:
combi_operation[0] = x
for y in L2:
combi_operation[1] = y
for z in L2:
combi_operation[2] = z
for w in L2:
combi_operation[3] = w
combi2.append(combi_operation)
print(combi_operation)
这就是我得到的:
['+', '+', '+', '+']
['+', '+', '+', '-']
['+', '+', '+', '*']
['+', '+', '+', '/']
['+', '+', '-', '+']
['+', '+', '-', '-']
['+', '+', '-', '*']
['+', '+', '-', '/']
['+', '+', '*', '+']
['+', '+', '*', '-']
['+', '+', '*', '*']
['+', '+', '*', '/']
['+', '+', '/', '+']
['+', '+', '/', '-']
['+', '+', '/', '*']
['+', '+', '/', '/']
['+', '-', '+', '+']
['+', '-', '+', '-']
['+', '-', '+', '*']
['+', '-', '+', '/']
['+', '-', '-', '+']
['+', '-', '-', '-']
['+', '-', '-', '*']
['+', '-', '-', '/']
['+', '-', '*', '+']
['+', '-', '*', '-']
['+', '-', '*', '*']
['+', '-', '*', '/']
['+', '-', '/', '+']
['+', '-', '/', '-']
['+', '-', '/', '*']
['+', '-', '/', '/']
['+', '*', '+', '+']
['+', '*', '+', '-']
['+', '*', '+', '*']
['+', '*', '+', '/']
['+', '*', '-', '+']
['+', '*', '-', '-']
['+', '*', '-', '*']
['+', '*', '-', '/']
['+', '*', '*', '+']
['+', '*', '*', '-']
['+', '*', '*', '*']
['+', '*', '*', '/']
['+', '*', '/', '+']
['+', '*', '/', '-']
['+', '*', '/', '*']
['+', '*', '/', '/']
['+', '/', '+', '+']
['+', '/', '+', '-']
['+', '/', '+', '*']
['+', '/', '+', '/']
['+', '/', '-', '+']
['+', '/', '-', '-']
['+', '/', '-', '*']
['+', '/', '-', '/']
['+', '/', '*', '+']
['+', '/', '*', '-']
['+', '/', '*', '*']
['+', '/', '*', '/']
['+', '/', '/', '+']
['+', '/', '/', '-']
['+', '/', '/', '*']
['+', '/', '/', '/']
['-', '+', '+', '+']
['-', '+', '+', '-']
['-', '+', '+', '*']
['-', '+', '+', '/']
['-', '+', '-', '+']
['-', '+', '-', '-']
['-', '+', '-', '*']
['-', '+', '-', '/']
['-', '+', '*', '+']
['-', '+', '*', '-']
['-', '+', '*', '*']
['-', '+', '*', '/']
['-', '+', '/', '+']
['-', '+', '/', '-']
['-', '+', '/', '*']
['-', '+', '/', '/']
['-', '-', '+', '+']
['-', '-', '+', '-']
['-', '-', '+', '*']
['-', '-', '+', '/']
['-', '-', '-', '+']
['-', '-', '-', '-']
['-', '-', '-', '*']
['-', '-', '-', '/']
['-', '-', '*', '+']
['-', '-', '*', '-']
['-', '-', '*', '*']
['-', '-', '*', '/']
['-', '-', '/', '+']
['-', '-', '/', '-']
['-', '-', '/', '*']
['-', '-', '/', '/']
['-', '*', '+', '+']
['-', '*', '+', '-']
['-', '*', '+', '*']
['-', '*', '+', '/']
['-', '*', '-', '+']
['-', '*', '-', '-']
['-', '*', '-', '*']
['-', '*', '-', '/']
['-', '*', '*', '+']
['-', '*', '*', '-']
['-', '*', '*', '*']
['-', '*', '*', '/']
['-', '*', '/', '+']
['-', '*', '/', '-']
['-', '*', '/', '*']
['-', '*', '/', '/']
['-', '/', '+', '+']
['-', '/', '+', '-']
['-', '/', '+', '*']
['-', '/', '+', '/']
['-', '/', '-', '+']
['-', '/', '-', '-']
['-', '/', '-', '*']
['-', '/', '-', '/']
['-', '/', '*', '+']
['-', '/', '*', '-']
['-', '/', '*', '*']
['-', '/', '*', '/']
['-', '/', '/', '+']
['-', '/', '/', '-']
['-', '/', '/', '*']
['-', '/', '/', '/']
['*', '+', '+', '+']
['*', '+', '+', '-']
['*', '+', '+', '*']
['*', '+', '+', '/']
['*', '+', '-', '+']
['*', '+', '-', '-']
['*', '+', '-', '*']
['*', '+', '-', '/']
['*', '+', '*', '+']
['*', '+', '*', '-']
['*', '+', '*', '*']
['*', '+', '*', '/']
['*', '+', '/', '+']
['*', '+', '/', '-']
['*', '+', '/', '*']
['*', '+', '/', '/']
['*', '-', '+', '+']
['*', '-', '+', '-']
['*', '-', '+', '*']
['*', '-', '+', '/']
['*', '-', '-', '+']
['*', '-', '-', '-']
['*', '-', '-', '*']
['*', '-', '-', '/']
['*', '-', '*', '+']
['*', '-', '*', '-']
['*', '-', '*', '*']
['*', '-', '*', '/']
['*', '-', '/', '+']
['*', '-', '/', '-']
['*', '-', '/', '*']
['*', '-', '/', '/']
['*', '*', '+', '+']
['*', '*', '+', '-']
['*', '*', '+', '*']
['*', '*', '+', '/']
['*', '*', '-', '+']
['*', '*', '-', '-']
['*', '*', '-', '*']
['*', '*', '-', '/']
['*', '*', '*', '+']
['*', '*', '*', '-']
['*', '*', '*', '*']
['*', '*', '*', '/']
['*', '*', '/', '+']
['*', '*', '/', '-']
['*', '*', '/', '*']
['*', '*', '/', '/']
['*', '/', '+', '+']
['*', '/', '+', '-']
['*', '/', '+', '*']
['*', '/', '+', '/']
['*', '/', '-', '+']
['*', '/', '-', '-']
['*', '/', '-', '*']
['*', '/', '-', '/']
['*', '/', '*', '+']
['*', '/', '*', '-']
['*', '/', '*', '*']
['*', '/', '*', '/']
['*', '/', '/', '+']
['*', '/', '/', '-']
['*', '/', '/', '*']
['*', '/', '/', '/']
['/', '+', '+', '+']
['/', '+', '+', '-']
['/', '+', '+', '*']
['/', '+', '+', '/']
['/', '+', '-', '+']
['/', '+', '-', '-']
['/', '+', '-', '*']
['/', '+', '-', '/']
['/', '+', '*', '+']
['/', '+', '*', '-']
['/', '+', '*', '*']
['/', '+', '*', '/']
['/', '+', '/', '+']
['/', '+', '/', '-']
['/', '+', '/', '*']
['/', '+', '/', '/']
['/', '-', '+', '+']
['/', '-', '+', '-']
['/', '-', '+', '*']
['/', '-', '+', '/']
['/', '-', '-', '+']
['/', '-', '-', '-']
['/', '-', '-', '*']
['/', '-', '-', '/']
['/', '-', '*', '+']
['/', '-', '*', '-']
['/', '-', '*', '*']
['/', '-', '*', '/']
['/', '-', '/', '+']
['/', '-', '/', '-']
['/', '-', '/', '*']
['/', '-', '/', '/']
['/', '*', '+', '+']
['/', '*', '+', '-']
['/', '*', '+', '*']
['/', '*', '+', '/']
['/', '*', '-', '+']
['/', '*', '-', '-']
['/', '*', '-', '*']
['/', '*', '-', '/']
['/', '*', '*', '+']
['/', '*', '*', '-']
['/', '*', '*', '*']
['/', '*', '*', '/']
['/', '*', '/', '+']
['/', '*', '/', '-']
['/', '*', '/', '*']
['/', '*', '/', '/']
['/', '/', '+', '+']
['/', '/', '+', '-']
['/', '/', '+', '*']
['/', '/', '+', '/']
['/', '/', '-', '+']
['/', '/', '-', '-']
['/', '/', '-', '*']
['/', '/', '-', '/']
['/', '/', '*', '+']
['/', '/', '*', '-']
['/', '/', '*', '*']
['/', '/', '*', '/']
['/', '/', '/', '+']
['/', '/', '/', '-']
['/', '/', '/', '*']
['/', '/', '/', '/']
我希望将其转换为列表清单......
我该怎么办?谢谢!
答案 0 :(得分:1)
您需要每次都创建一个新列表,否则您要修改一遍又一遍地添加相同的列表。最简单的方法是在每次附加时克隆combi_operation
。
combi2.append(combi_operation[:])
或
combi2.append(list(combi_operation))
答案 1 :(得分:1)
你可以这样做:
L2 = ['+', '-', '*', '/']
combi2 = []
for x in L2:
for y in L2:
for z in L2:
for w in L2:
combi2.append([x,y,z,w])
问题在于您始终在修改原始列表,因此它会修改您在combi2中的引用。对于列表,python存储引用而不是值。
答案 2 :(得分:0)
在python中执行此操作的正确方法是使用product函数。
from itertools import product
results = list(product("+-*/", repeat=4))
答案 3 :(得分:0)
您可能想要从标准库中查看itertools模块。你在做什么看起来像笛卡儿的产品。
https://docs.python.org/3.6/library/itertools.html#itertools.product
product('ABCD', repeat=2) # AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations('ABCD', 2) # AB AC AD BA BC BD CA CB CD DA DB DC
combinations('ABCD', 2) # AB AC AD BC BD CD
combinations_with_replacement('ABCD', 2) # AA AB AC AD BB BC BD CC CD DD
Itertools还为permutations,combinations和combinations with replacement提供了组合生成器:
{{1}}
答案 4 :(得分:0)
如果您正在寻找列表的排列,您可以选择使用itertools:
import itertools
L2 = ['+', '-', '*', '/']
permutations = list(itertools.permutations(L2)) # the result is casted into a list from a generator
结果列表的每个元素都是元组,但您可以使用理解表达式轻松地转换每个元素
L3 = [list(element) for element in permutations]
请查看文档以获取有关排列的更多信息:
https://docs.python.org/2/library/itertools.html#itertools.permutations
答案 5 :(得分:0)
使用此:
from itertools import product
L2 = ['+', '-', '*', '/']
for i in product(L2, repeat=4):
print(i)