生成独特的排列

时间:2014-05-17 12:03:21

标签: python-3.x

我正在尝试从字符串生成长度为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')]
'''

1 个答案:

答案 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)