我正在尝试从字符串生成长度为2的唯一排列,但我得到重复的值。我究竟做错了什么? 这是代码:
a = 'abba'
from itertools import permutations
x = []
x = [y for y in list(permutations(a,2)) if y not in x]
'''
output was this:
[('a', 'b'), ('a', 'b'), ('a', 'a'), ('b', 'a'), ('b', 'b'), ('b', 'a'), ('b', 'a'), ('b', 'b'),('b', 'a'), ('a', 'a'), ('a', 'b'), ('a', 'b')]
'''
答案 0 :(得分:1)
列表推导构建一个列表,然后将其分配给x
,所以x == []
一直在运行。每次列表理解检查y not in x
时, x
仍然是一个空列表,所以当然y
永远不在其中。
如果订单不重要,您可以使用set
代替:
x = set(permutations(a, 2))
否则,展开列表理解:
x = []
for y in permutations(a, 2):
if y not in x:
x.append(y)