【问题标题】:Using Python3 itertools permutations: how can I specify all r > 1使用 Python3 itertools 排列:如何指定所有 r > 1
【发布时间】:2020-03-09 23:32:34
【问题描述】:

我只想要大小为 2 或更大的字符串的排列,因此没有空集或一个字符集。看来r 必须是一个整数,我不能说r = range(2,N)r>=2。我能想到的唯一解决方案是 for 循环;有没有更好的办法?

【问题讨论】:

  • 我不太清楚您要做什么。 r 参数用于指定将输出的排列的确切长度。你想要所有长度的所有排列吗?可能是[permutations(iterable, r) for r in range(2,len(iterable)+1)] 之类的?
  • 是的,看起来 for 循环是不可避免的。谢谢。

标签: python python-3.x permutation itertools


【解决方案1】:

您确实需要一个for 循环。但是您可以使用itertools.chain 更简洁地做到这一点,这将创建一个生成器,首先生成长度为 2、然后为 3 等的所有排列。

from itertools import chain, permutations

lst = [1, 2, 3]
tuples_gen = chain(*(permutations(lst, i) for i in range(2, len(lst) + 1)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多