def sum_items(list1, list2):
sum_list = []
for i in range(len(list1)):
sum_list.append(list1[i] + list2[i])
return sum_list
为什么像这样的东西需要范围函数?如果我们简单地使用 list1 的 len,结果会不会一样?
请您参考如下方法:
因为 Python 中的 for 循环实际上是一个 for each loop ;你需要给它一个 iterable 来循环;您不是在循环一定次数的迭代,而是在元素上迭代,一个元素接一个元素。
如果您尝试仅遍历长度,则会出现异常:
>>> for i in 42:
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
对于您的特定 示例,您也不需要使用range(),我会使用zip() function相反:
def sum_items(list1, list2):
sum_list = []
for i, j in zip(list1, list2)
sum_list.append(i + j)
return sum_list
或者,结合列表理解:
def sum_items(list1, list2):
return [i + j for i, j in zip(list1, list2)]
或使用 sum()对每个压缩元组中的所有值求和:
def sum_items(list1, list2):
return [sum(t) for t in zip(list1, list2)]
zip() 从每个参数可迭代对象中获取元素,并将这些元素一一配对; [1, 2, 3] 和 ['foo', 'bar', 'baz'] 变成 [(1, 'foo'), (2 , 'bar'), (3, 'baz')].更多输入参数意味着输出元组中有更多元素。
