相关疑难解决方法(0)

Python:生成长度为N的所有唯一排序列表

我想详尽地分析用于排序小数组的子程序,并且需要一种方法来生成特定长度的所有唯一排序的数组.在Python中,这将是具有非负整数作为元素的列表,并且最好在可能时使用最小整数.例如,N = 3:

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

[1,1,1][2,2,0]没有在上面的列表中属于,因为[0,0,0][1,1,0]分别具有相同的相对顺序,同时使用较小的整数.

python arrays sorting generator permutation

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

我如何找到所有正好有6个1和其余0的32位二进制数

我可以用蛮力做到这一点,但是我希望有聪明的编码,或者是现有的功能,或者我没有意识到的东西...

所以我想要一些数字的例子:

00000000001111110000
11111100000000000000
01010101010100000000
10101010101000000000
00100100100100100100
Run Code Online (Sandbox Code Playgroud)

完整排列。除非结果只有六个1。不多。不低于。64或32位将是理想的。16位(如果提供答案)。

python algorithm math binary combinatorics

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

大型集合的独特排列

我正试图找到一种方法来为y长度的x值生成唯一的排列.我想要做的是:

[0,1].unique_permutations(15)
# => [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
#     [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
#     [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
#     ... massive snip
#     [1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1],
#     [1, 0, 1, 1, 0, 1, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

ruby algorithm

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

独特的置换生成器?

问题:我有一些数字列表,例如[1,1,2]. 我需要生成唯一的排列。排列是[1,1,2],[1,1,2],[1,2,1],[1,2,1],[2,1,1],[2,1,1]。我只需要生成唯一的排列,即[1,1,2],[1,2,1],[2,1,1].

我的尝试:我的第一次尝试是保留一组现有的排列,并为itertools.permutations生成器创建一个过滤器,该过滤器将使用该组过滤掉重复项。但是,出于效率原因,我宁愿不首先生成这些排列。即使对于 12 个数字的小列表,也只有 1% 是唯一的。

我有一个我似乎无法完全弄清楚的想法的开始:我可以在我的列表中创建唯一值的排列,即[1,2],将剩余的数字放在所有不同的地方。

感谢您的帮助,并且要明确的是,我不想过滤掉重复的排列,我只想首先生成唯一的排列。

python algorithm permutation

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

在python中获取所有可能的订单组合

我有一个 1 和 2 的列表,例如 [2, 1, 1, 1] 我需要获得所有可能的组合:

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

我尝试使用 itertools 的产品,但是,它多次返回相同的结果(例如 [2, 1, 1, 1]),并且在输入较大时效率低下。是否有一些内置功能用于这样的事情?

python combinations

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

在Python中生成唯一排列

我希望找到列表的独特排列,x = ["$ 5","$ 10","$ 10","TAX","$ 5","20%","BOGO","BOGO","税" "]以9人为一组

我目前正在做的是

from itertools import permutations
x = ["$5", "$10", "$10", "TAX", "$5", "20%", "BOGO", "BOGO", "TAX"]
combos = []
for i in permutations(x, 9):
    if i not in combos:
        combos.append(i)
print combos
Run Code Online (Sandbox Code Playgroud)

然而,这需要太长时间才能运行,我想知道是否有人能给我一个更有效的解决方案.

python

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

查找列表二进制值的唯一排列,而不会产生所有可能性

原谅我的无知.我目前有一个脑屁,无法找到解决方案.假设我有一份清单[1, 1, 0, 0].我想计算所有四位二进制数,它们恰好有两个1和两个零,如:

['0110', '0011', '0101', '1100', '1010', '1001']
Run Code Online (Sandbox Code Playgroud)

这有效:

from itertools import permutations

set([''.join(x) for x in list(permutations('0011', 4))])
Run Code Online (Sandbox Code Playgroud)

但是这会计算整个排列,然后丢弃副本.意思是,它计算了24次,但我只需要6次[1, 1, 1, 1, 0, 0, 0, 0].如果收集的话,它会更加重要.

这应该很容易,但我无法绕过它.

python permutation

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

Python3:计算两个列表总和为100的所有排列的最有效方法是什么?

想象一下,我们有一个股票清单:

stocks = ['AAPL','GOOGL','IBM']
Run Code Online (Sandbox Code Playgroud)

具体的股票并不重要,重要的是我们在这个清单中有n个项目.

想象一下,我们还有一个权重列表,从0%到100%:

weights = list(range(101))
Run Code Online (Sandbox Code Playgroud)

给定n = 3(或任何其他数字),我需要生成一个矩阵,其中每个可能的权重组合总和达到100%.例如

0%, 0%, 100%
1%, 0%, 99%
0%, 1%, 99%
etc...
Run Code Online (Sandbox Code Playgroud)

是否有一些itertools的方法可以做到这一点?什么东西在numpy?最有效的方法是什么?

python numpy combinatorics python-itertools

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

Python itertools 不重复的排列

我有一个字符串显示 mxn 网格中的步骤,就像这个问题: https ://leetcode.com/problems/unique-paths/

step = 'DDRR'
Run Code Online (Sandbox Code Playgroud)

D 表示“向下”,R 表示“向右” 我想显示无需替换的排列,我发现 Python 内置了 itertools。但是它说:

元素根据其位置而不是其值被视为唯一。因此,如果输入元素是唯一的,则不会有重复值。

因此,当我使用 itertools.permutation(step,4) 时,它包含许多重复。

>>> itertools.permutations(step,4)
('D', 'D', 'R', 'R')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'D', 'R', 'R')
('D', 'D', 'R', 'R')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', …
Run Code Online (Sandbox Code Playgroud)

python permutation combinatorics python-itertools

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