遍历多个列表的相应元素
loop over corresponding elements of multiple lists
我有一个需要两个输入的函数。我想向它传递两个输入列表和 return 一个将函数依次应用于相应输入的列表。在 Python 中执行此操作的最佳做法是什么?我正在从 R 过渡,在那里我会使用 mapply 函数。
def myfunc(x, y):
return x + y
res = [myfunc(i, j) for i in [1, 2, 3] for j in [1, 2, 3]]
# Code above returns all combinations (which I don't need).
# Desired result: [2, 4, 6]
尝试使用:
res = [myfunc(x, y) for x, y in zip([1, 2, 3], [1, 2, 3])]
或者对于未知数量的迭代器,执行:
res = [myfunc(*i) for i in zip([1, 2, 3], [1, 2, 3])]
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
def myfunc(x, y):
return x + y
sum = np.vectorize(myfunc)(a,b)
print(sum)
#[2,4,6]
map
函数适用于此,因为它允许传递多个可迭代对象。
def my_func(x, y):
return x + y
xs = (1, 2, 3)
result = list(map(my_func, xs, xs))
我有一个需要两个输入的函数。我想向它传递两个输入列表和 return 一个将函数依次应用于相应输入的列表。在 Python 中执行此操作的最佳做法是什么?我正在从 R 过渡,在那里我会使用 mapply 函数。
def myfunc(x, y):
return x + y
res = [myfunc(i, j) for i in [1, 2, 3] for j in [1, 2, 3]]
# Code above returns all combinations (which I don't need).
# Desired result: [2, 4, 6]
尝试使用:
res = [myfunc(x, y) for x, y in zip([1, 2, 3], [1, 2, 3])]
或者对于未知数量的迭代器,执行:
res = [myfunc(*i) for i in zip([1, 2, 3], [1, 2, 3])]
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
def myfunc(x, y):
return x + y
sum = np.vectorize(myfunc)(a,b)
print(sum)
#[2,4,6]
map
函数适用于此,因为它允许传递多个可迭代对象。
def my_func(x, y):
return x + y
xs = (1, 2, 3)
result = list(map(my_func, xs, xs))