繁体   English   中英

列表python的排列

[英]Permutations of a list python

我需要定义一个函数apply(L,P),其中L是一个列表,P是一个排列,它应该返回列表L oP。假设len(L) = len(P)

到目前为止,我得到的是

import itertools 
def apply(L, P):
    for perm in L:
        return perm

输入的示例是apply(['ah', 'boo', 'cc', 'du', 'eh'], [1, 4, 3, 2, 0])但是唯一的输出是'ah'

任何帮助都会很棒。

这听起来像是通过列表理解最容易完成的任务:

>>> def apply(L, P):
...   return [ L[i] for i in P ]
... 
>>> apply(['ah', 'boo', 'cc', 'du', 'eh'], [1, 4, 3, 2, 0])
['boo', 'eh', 'du', 'cc', 'ah']

这是我的版本:

def apply(L, P):
    newL = [None]*len(L)
    for i,index in enumerate(P):
        newL[i] = L[index]
    return newL

这很容易在python的一行中完成,但是我想说明一下这里发生的事情。

整个列表在返回之前创建。 return表示该函数应退出并返回指定的值。 在您的情况下为'ah'因为它是您要遍历的列表中的第一个元素。

如果您想学习python,请查看svk的pythonic列表理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM