我正在使用递归来获取列表的排列.这是我写的,但yield版本不起作用:
def test_permutation_rec():
print "test 2"
permutation_rec2([1,2,3],[])
print "test 1"
for one in permutation_rec1([1,2,3],[]):
print "one:",one
def permutation_rec1(onelist,prelist):
if onelist == [] :
print prelist
yield prelist
lenlist= len(onelist)
for i, oneitem in enumerate(onelist) :
leftlist = [onelist[j] for j in range(0,lenlist) if j != i]
permutation_rec1(leftlist,prelist + [oneitem])
def permutation_rec2(onelist,prelist):
if onelist == [] :
print prelist
lenlist= len(onelist)
for i, oneitem in enumerate(onelist) :
leftlist = [onelist[j] for j in range(0,lenlist) if j != i]
permutation_rec2(leftlist,prelist …Run Code Online (Sandbox Code Playgroud) 嘿,我有一个列表,我希望得到它的所有不同的排列,即[A,B,C].
我想要它的所有不同组合.像[A,C,B],[B,A,C],[B,A,C],[C,A,B]和[C,B,A]我尝试使用itertools.combinations,我得到所有组合只是没有使用所有字母的组合.
matriks = ["A","B","C"]
combs=[]
for i in xrange(1, len(matriks)+1):
els = [list(x) for x in itertools.combinations(matriks, i)]
combs.append(els)
print(combs)
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出
[[['A'], ['B'], ['C']], [['A', 'B'], ['A', 'C'], ['B', 'C']], [['A', 'B', 'C']]]
Run Code Online (Sandbox Code Playgroud) 有没有人知道R函数来解决组合优化中的赋值问题.
例如:假设我有N = 3名学生(1,2,3)和S = 4个可能的工作实习(A,B,C,D).每个N = 3名学生对所有S = 4个工作实习进行排名.1个位置显然不会得到学生(缺少表示为".").这是现实(因为N小于S)并且很好.有(我认为)4!可能的分配在这里:
A B C D
1 2 3 .
1 . 2 3
1 3 . 2
1 . 3 2
1 3 2 .
And so on for the next 18 possible ways...
Run Code Online (Sandbox Code Playgroud)
因此,如果N和S很小,我可以考虑将所有可能的"现实"分配给学生.我可以从每个"现实"中总结出来.并选择具有最小总和等级的现实(在公平的系统中)是大多数学生得到他们想要的东西.
我正在尝试编写一个 Python 程序,该程序输出使用字符形成的所有可能的字符串,c, a, t, d, o并且g仅使用递归一次。
到目前为止,我有这个:
i = ['c', 'a', 't', 'd', 'o', 'g']
counter = 0
def func(i):
global counter
i[counter], i[counter+1] = i[counter+1], i[counter]
print(i)
if counter != 5:
counter += 1
return func(i)
func(i)
Run Code Online (Sandbox Code Playgroud)
编辑:抱歉“不礼貌”,但我只是复制粘贴了书中的练习。这只是书中的纯文字。
列表中有四个字母
letters = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
我想用组合中的每个字母创建另一个列表,因此结果如下所示:
['a-b', 'a-c', 'a-d'
'b-a', 'b-c', 'b-d',
'c-a', 'c-b', 'c-d',
'd-a', 'd-b', 'd-c']
Run Code Online (Sandbox Code Playgroud)
怎么做到呢?
以下是两个列表示例
list = [["mo", "thu"], ["we", "fri"], ["mo", "mo"]]
list2 = [["mo", "fri", "fri"], ["we", "we"]]
Run Code Online (Sandbox Code Playgroud)
所以这些列表是随机排列的.我在这里举了两个例子.我想要做的是计算这些列表可以排列的所有可能方式.在列表[1]*列表[2]*列表[3]的级别上.所有可能的组合.我希望达到的一个较小的例子是:
list3 = [["we", "thu"],["fri", "thu"]]
Run Code Online (Sandbox Code Playgroud)
- >
[["we", "fri"], ["we", "thu"], ["thu", "fri"], ["thu", "thu"]]
Run Code Online (Sandbox Code Playgroud)
此外,列表是随机的,因此列表中的元素数量或嵌套列表可能会有所不同.我可以通过很多代码来解决这个问题,但我希望有一个更简单的方法.
干杯
是否有一种简单的方法来编写生成器来生成k个元素长的所有列表,其中每个元素的范围从1到n?
因此,如果k = 3且n = 3,则会生成
[1,1,1]
[1,1,2]
[1,1,3]
[1,2,1]
[1,2,2]
[1,2,3]
[1,3,1]
...
[3,3,1]
[3,3,2]
[3,3,3]
Run Code Online (Sandbox Code Playgroud) 如何在Python中找到包含3个元素的列表的所有排列?
例如,输入
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
会回来的
[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个元素列表,如:
x = ['A, B', '2', '3', 'Jan, Feb']
# ^ ^
# comma separated single string
Run Code Online (Sandbox Code Playgroud)
我想将此列表转换为列表列表,其中每个元素的所有组合都以逗号分隔,以便它看起来像:
[['A', '2', '3', 'Jan'], ['A', '2', '3', 'Feb']
['B', '2', '3', 'Jan'], ['B', '2', '3', 'Feb']]
Run Code Online (Sandbox Code Playgroud)
使用Python的内置函数/库实现这一目标的优雅方法是什么?
我需要构建一个接受2个元组的函数,并将它们与所有可能的对配对。
例如,我需要带元组:
first_tuple = (1, 2)
second_tuple = (4, 5)
Run Code Online (Sandbox Code Playgroud)
结果必须是:
((1, 4), (4, 1), (1, 5), (5, 1), (2, 4), (4, 2), (2, 5), (5, 2))
Run Code Online (Sandbox Code Playgroud) python ×9
list ×4
algorithm ×2
recursion ×2
combinations ×1
generator ×1
permutation ×1
python-3.x ×1
r ×1
sorting ×1
swap ×1
yield ×1