我需要定义一个函数apply(L,P),其中L是一个列表,P是一个排列,它应该返回列表L o P.假设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'
任何帮助都会很棒。
答案 0 :(得分:1)
这听起来像是一个列表理解最容易实现的任务:
>>> 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']
答案 1 :(得分:0)
这是我的版本:
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列表理解。