所以不是我麻烦的排列,而是结果列表不等于我开始使用的原始列表。清单是这个,
B=[[m, b], [c, g], [d, f]]
以及我用来获取所有排列的代码是这个,以及结果,
C=list(itr.permutations(B))
C
[([m, b], [c, g], [d, f]),
([m, b], [d, f], [c, g]),
([c, g], [m, b], [d, f]),
([c, g], [d, f], [m, b]),
([d, f], [m, b], [c, g]),
([d, f], [c, g], [m, b])]
有没有办法在括号中而不是内部列表,而是在方括号中,因为到目前为止,C [0]与B不同,实际上它们应该相等。
C[0]==B
False
我已经将字母(m,b,d等)定义为sympy中的符号,而不是字符串。任何建议表示赞赏。
您可以使用map()
将元组变成列表:
map()
只需使用>>> import itertools as itr
>>> B=[[m, b], [c, g], [d, f]]
>>> map(list, itr.permutations(B))
[[['m', 'b'], ['c', 'g'], ['d', 'f']], [['m', 'b'], ['d', 'f'], ['c', 'g']], [['c', 'g'], ['m', 'b'], ['d', 'f']], [['c', 'g'], ['d', 'f'], ['m', 'b']], [['d', 'f'], ['m', 'b'], ['c', 'g']], [['d', 'f'], ['c', 'g'], ['m', 'b']]]
C[0][0] == B[0]