我想尝试python功能的很多方法 所以,我想不使用zip使用其他python函数,我该怎么做?
这是使用zip并添加多个列表: 但我想以其他方式不使用zip:
x = [12, 22, 32, 42, 52, 62, 72, 82, 29]
y = [10, 11, 12, 13, 14, 15, 16, 17, 18]
def add_list(i, j):
l = []
for n, m in zip(x, y):
l.append(n + m)
return l
我知道这一点,
答案 0 :(得分:1)
没有使用zip
,您可以使用map
:
from operator import add
x = [12, 22, 32, 42, 52, 62, 72, 82, 29]
y = [10, 11, 12, 13, 14, 15, 16, 17, 18]
res = map(add, x, y)
# [22, 33, 44, 55, 66, 77, 88, 99, 47]
请注意,如果迭代的长度不同,则最短的将用None
填充,这将导致TypeError
中的add
而不是zip
截断到最短的列表。
暂且没有使用zip
绝对没有错 - 我可能会将其重新编写为list-comp,例如:
[sum(items) for items in zip(x, y)]
然后这很容易扩展到zip(x, y, z, another_list)
等...
答案 1 :(得分:0)
# most simple way
res = []
for i in range(len(x)):
res.append(x[i]+y[i])
# this is the same as
res = [x[i]+y[i] for i in range(len(x))]
# more pythonic
from operator import add
res = map(add, x, y)
# less pytonic
res = map(int.__add__, x, y)
# using numpy
import numpy as np
res = list(np.array(x) + np.array(y))
# alternatively
res = list(np.add(x, y))
# also
res = list(np.sum([x,y], axis=0))