Python 如何将列表中的每个元素除以第一个元素 让我们考虑一些列表: arr = [2, 4, 6, 8, 10]

Python 如何将列表中的每个元素除以第一个元素 让我们考虑一些列表: arr = [2, 4, 6, 8, 10],python,functional-programming,Python,Functional Programming,我需要将列表中的每个元素除以它的第一个元素。 可通过列表竞争完成: [e / arr[0] for e in arr] 但是我必须为此使用一些函数编程您可以将内置函数映射与类列表结合使用: 返回一个迭代器,该迭代器将函数应用于iterable的每个项,并生成结果 获取一个iterable以生成列表。使用映射: 如果不喜欢lambda表达式,可以在操作符中使用truediv或floordiv方法,但是需要两个参数,所以这里我使用了一个小技巧 from operator import truedi

我需要将列表中的每个元素除以它的第一个元素。 可通过列表竞争完成:

[e / arr[0] for e in arr]

但是我必须为此使用一些函数编程

您可以将内置函数映射与类列表结合使用:

返回一个迭代器,该迭代器将函数应用于iterable的每个项,并生成结果

获取一个iterable以生成列表。

使用映射:

如果不喜欢lambda表达式,可以在操作符中使用truediv或floordiv方法,但是需要两个参数,所以这里我使用了一个小技巧

from operator import truediv
from itertools import starmap
arr = [2, 4, 6, 8, 10]
arr = zip(arr, [arr[0]]*len(arr))
out = list(starmap(truediv, arr))
print(out)
我首先根据这个问题构建了一个新的iterable,然后使用starmap将多个参数映射到一个函数。运算符中的truediv具有与运算符/完全相同的功能,但只需使其以函数方式运行,并接受两个参数并返回它们之间的div结果。

映射:

或者作为一种功能:

>>> def f(x):
    return x/arr[0]

>>> list(map(f,arr))
[1.0, 2.0, 3.0, 4.0, 5.0]
>>> 
或者使用numpy:

>>> import numpy as np
>>> arr2=np.array(arr)
>>> arr2/arr[0]
array([ 1.,  2.,  3.,  4.,  5.])
>>> 
如果您想要列表:

>>> import numpy as np
>>> arr2=np.array(arr)
>>> (arr2/arr[0]).tolist()
[1.0, 2.0, 3.0, 4.0, 5.0]
>>> 

啊,你打几秒钟就好了,这个答案现在是重复答案。
>>> def f(x):
    return x/arr[0]

>>> list(map(f,arr))
[1.0, 2.0, 3.0, 4.0, 5.0]
>>> 
>>> import numpy as np
>>> arr2=np.array(arr)
>>> arr2/arr[0]
array([ 1.,  2.,  3.,  4.,  5.])
>>> 
>>> import numpy as np
>>> arr2=np.array(arr)
>>> (arr2/arr[0]).tolist()
[1.0, 2.0, 3.0, 4.0, 5.0]
>>>