列表python的排列

2024-06-16 11:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要定义一个函数apply(L,p),其中L是一个列表,p是一个置换,它应该返回列表lop

到目前为止我得到的是

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

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

任何帮助都会很好。在


Tags: 函数inimport列表forreturn定义def
2条回答

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

>>> 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的very python list comprehension。在

相关问题 更多 >