【问题标题】:Generating unique permutations生成独特的排列
【发布时间】:2014-05-17 20:17:05
【问题描述】:

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

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    列表推导式构建一个列表,然后将它分配给x,所以x == [] 在它运行的整个过程中。每次列表理解检查y not in xx 仍然是一个空列表,所以当然y 永远不会在其中。

    如果顺序不重要,您可以改用set

    x = set(permutations(a, 2))
    

    否则,展开列表推导:

    x = []
    for y in permutations(a, 2):
        if y not in x:
            x.append(y)
    

    【讨论】:

    • 对不起。你能解释一下吗? :3
    • 哪一部分你不明白?
    • 我知道它首先构建一个列表,然后将其分配给 x 但它与这些重复项有什么关系? :|
    • 因为每次列表理解检查y not in xx 仍然是一个空列表
    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2012-08-02
    • 2011-03-09
    相关资源
    最近更新 更多