3 回答

TA貢獻1805條經(jīng)驗 獲得超9個贊
您可以使用依次從每個列表中zip()
獲取第n個元素,以及一個列表推導(dǎo)式,以使用如此生成的每組參數(shù)調(diào)用提供的函數(shù):
def my_map_k(f, *lists): return [f(*args) for args in zip(*lists)]
這是在行動:
>>> my_map_k(lambda x, y, z: x*y*z, [3, 2, 5], [2, 7, 9], [1, 2]) [6, 28]

TA貢獻1852條經(jīng)驗 獲得超7個贊
我想到了:
def my_map_k(f, *L):
z = zip(*L)
l = list(z)
return ([f(*x) for x in l])
my_map_k(lambda x, y, z: x*y*z, [3, 2, 5], [2, 7, 9], [1, 2])

TA貢獻1772條經(jīng)驗 獲得超5個贊
沒有輔助函數(shù)的解決方案:
from operator import add
def my_map_k(f, *L):
ind = 0
while True:
try:
yield f(*[l[ind] for l in L])
except IndexError:
break
else:
ind += 1
result = my_map_k(add, range(5), range(5))
print(list(result))
# [0, 2, 4, 6, 8]
添加回答
舉報