相关疑难解决方法(0)

如何在Python中生成列表的所有排列

如何在Python中生成列表的所有排列,与该列表中的元素类型无关?

例如:

permutations([])
[]

permutations([1])
[1]

permutations([1, 2])
[1, 2]
[2, 1]

permutations([1, 2, 3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

python algorithm permutation combinatorics python-2.5

543
推荐指数
18
解决办法
58万
查看次数

如何获得列表元素的所有可能组合?

我有一个包含15个数字的列表,我需要编写一些代码来生成这些数字的所有32,768种组合.

我发现了一些代码(通过谷歌搜索)显然正在寻找我正在寻找的东西,但我发现代码相当不透明并且对使用它很谨慎.另外我觉得必须有一个更优雅的解决方案.

我发生的唯一事情就是循环遍历十进制整数1-32768并将它们转换为二进制,并使用二进制表示作为过滤器来选择适当的数字.

有谁知道更好的方法?使用map(),也许?

python combinations

374
推荐指数
17
解决办法
56万
查看次数

生成长度为n且设置了k位的所有二进制字符串

查找包含k位的所有长度为n的二进制字符串的最佳算法是什么?例如,如果n = 4且k = 3,则有......

0111
1011
1101
1110
Run Code Online (Sandbox Code Playgroud)

我需要一个很好的方法来生成这些给定任何n和任何k所以我更喜欢用字符串来完成它.

algorithm binary combinations bits permutation

56
推荐指数
3
解决办法
4万
查看次数

从python列表中获取元素的唯一组合

编辑:这不是如何获得列表元素的所有可能组合的完全重复

本主题是关于查找唯一组合,而另一个主题是关于查找所有组合.

如果我有一个python列表:

 L = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

什么是获得列表中3个元素的所有可能独特组合的最佳方式,如下所示:

["1,2,3", "1,2,4", "2,3,4", "3,4,1"]
Run Code Online (Sandbox Code Playgroud)

组合中元素的顺序无关紧要.例如,"1,2,3""3,2,1"将被认为是相同的组合.

我可以写一些循环来做到这一点,但我认为可能有一个单行可以做同样的事情.

python combinations list

32
推荐指数
1
解决办法
3万
查看次数

查找列表的所有可能的子列表

假设我有以下列表

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
Run Code Online (Sandbox Code Playgroud)

我想找到某个长度的所有可能的子列表,其中它们不包含一个特定的数字并且不会丢失数字的顺序.

例如,所有可能的长度为6而没有12的子列表是:

[1,2,3,4,5,6]
[2,3,4,5,6,7]
[3,4,5,6,7,8]
[4,5,6,7,8,9]
[5,6,7,8,9,10]
[6,7,8,9,10,11]
[13,14,15,16,17,18]
Run Code Online (Sandbox Code Playgroud)

问题是,我想在一个非常大的列表中进行,我想要最快捷的方式.

用我的方法更新:

oldlist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
newlist = []
length = 6
exclude = 12
for i in oldlist:
   if length+i>len(oldlist):
       break
   else:
       mylist.append(oldlist[i:(i+length)]
for i in newlist:
    if exclude in i:
       newlist.remove(i)
Run Code Online (Sandbox Code Playgroud)

我知道这不是最好的方法,这就是为什么我需要一个更好的方法.

python

15
推荐指数
2
解决办法
2万
查看次数

Python组合没有重复

我有一个数字列表,我想从中组合.如果我有清单:

t = [2,2,2,2,4]
c = list(itertools.combinations(t, 4))
Run Code Online (Sandbox Code Playgroud)

结果是:

(2, 2, 2, 2)
(2, 2, 2, 4)
(2, 2, 2, 4)
(2, 2, 2, 4)
(2, 2, 2, 4)
Run Code Online (Sandbox Code Playgroud)

但我想得到:

(2, 2, 2, 2)
(2, 2, 2, 4)
Run Code Online (Sandbox Code Playgroud)

是否有可能消除重复,除了制作新的列表并通过第一个列表?

python

9
推荐指数
4
解决办法
1万
查看次数

如何迭代列表的组合

我有一个元素列表,比方说

list = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我想迭代这个列表中不同元素的一对,所以

for x, y in some_iterator(list):
    print x, y
Run Code Online (Sandbox Code Playgroud)

应该表明

1 2
1 3
1 4
2 3
2 4
3 4
Run Code Online (Sandbox Code Playgroud)

请注意,我不希望list此问题中使用所有组合.只是给定长度的组合.

这样做的最pythonic方式是什么?


如果我想对n-uples做同样的事情怎么办?例如,3元素的组合n

for x, y, z in another_iterator(list):
    print x, y, z
Run Code Online (Sandbox Code Playgroud)

会表现出来

1 2 3
1 2 4
2 3 4
Run Code Online (Sandbox Code Playgroud)

python iterator

7
推荐指数
1
解决办法
1万
查看次数

获取排序组合

我有一个输入

A = [2,0,1,3,2,2,0,1,1,2,0].
Run Code Online (Sandbox Code Playgroud)

下面我删除所有重复项

A = list(Set(A))
Run Code Online (Sandbox Code Playgroud)

A现在[0,1,2,3].现在我希望我可以使用此列表进行所有对组合,但是它们不需要是唯一的...因此[0,3]等于[3,0][2,3]等于[3,2].在这个例子中它应该返回

[[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]]
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?我查看了iteratoolslib.但无法提出解决方案.

python combinations

5
推荐指数
1
解决办法
2302
查看次数

使用递归计算长度为n的列表中的长度k的组合

我需要k从长度列表中生成长度的所有组合n,我必须使用递归来完成.

例如:

INPUT:  choose_sets([1,2,3,4],3)
OUTPUT: [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
Run Code Online (Sandbox Code Playgroud)
INPUT:  choose_sets([1,2,3,4],2)
OUTPUT: [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
Run Code Online (Sandbox Code Playgroud)

我在代码中执行此操作时遇到困难,所以我很乐意提供一些帮助.到目前为止这是我的代码(我遗漏的东西只是不知道是什么):

def choose_sets(lst,k):

    if k == len(lst):
        return lst
    if k == 0:
        return []
    if k > len(lst):
        return []

    sets=[]
    sub_lst=lst[:]
    sub_lst.remove(sub_lst[0])

    a= choose_sets(sub_lst,k-1)
    for i in a:
        i.append(lst[0])
    sets.append(a)

    b= choose_sets(sub_lst,k)
    sets.append(b)


    return sets
Run Code Online (Sandbox Code Playgroud)

python recursion permutation

4
推荐指数
1
解决办法
6686
查看次数

获取列表python的所有有序组合

我正在尝试生成数字列表的所有n项组合,同时保持数字顺序.例如,如果列表是

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

长度为3的有序组合将是:

[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
Run Code Online (Sandbox Code Playgroud)

需要说明的是,我必须保持数字顺序,因此[1,4,2]不会是理想的结果.

是否有一个功能可以做到这一点,还是一个快速算法可以完成它?实际列表是111,我将选择100项.谢谢.

python combinations python-itertools

4
推荐指数
1
解决办法
3759
查看次数

递归查找列表的所有组合

问题陈述

我想从我的列表中获取所有可能的组合(包括空列表)。

到目前为止我的代码是:

def combination(l):
    result = []
    for item in range(len(l)):
        cut_list = l[:item] + l[item + 1:]
        if len(cut_list) > 1:
            combination(cut_list)
        elif len(cut_list) == 1:
            result += cut_list
    return result


print(combination([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)

我的输出是一个空列表

[]
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

我很确定我的退货有些不对劲。

非常感谢任何帮助。

python recursion combinations return list

1
推荐指数
1
解决办法
8323
查看次数