相关疑难解决方法(0)

为什么不能在递归函数中使用yield

我正在使用递归来获取列表的排列.这是我写的,但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)

python algorithm recursion yield generator

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

Python列表的所有排列

嘿,我有一个列表,我希望得到它的所有不同的排列,即[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)

python sorting swap list python-itertools

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

R - lp.assign()中的分配算法

有没有人知道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很小,我可以考虑将所有可能的"现实"分配给学生.我可以从每个"现实"中总结出来.并选择具有最小总和等级的现实(在公平的系统中)是大多数学生得到他们想要的东西.

algorithm r

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

使用递归打印所有可能的组合

我正在尝试编写一个 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)

编辑:抱歉“不礼貌”,但我只是复制粘贴了书中的练习。这只是书中的纯文字。

python recursion

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

如何从另一个列表创建所有可能值的列表

列表中有四个字母

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)

怎么做到呢?

python

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

如何在Python中置换两个列表

以下是两个列表示例

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)

此外,列表是随机的,因此列表中的元素数量或嵌套列表可能会有所不同.我可以通过很多代码来解决这个问题,但我希望有一个更简单的方法.

干杯

python

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

Python:生成所有列表?

是否有一种简单的方法来编写生成器来生成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 list

-2
推荐指数
1
解决办法
71
查看次数

Python:3个元素的排列

如何在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)

谢谢!

python combinations list permutation

-2
推荐指数
1
解决办法
500
查看次数

Python - 将列表转换为所有组合列表的优雅方式

我有一个元素列表,如:

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的内置函数/库实现这一目标的优雅方法是什么?

python list python-3.x

-2
推荐指数
1
解决办法
70
查看次数

如何在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

-2
推荐指数
1
解决办法
112
查看次数