需要for循环中的范围

Zac*_*ack 1 python for-loop

def sum_items(list1, list2):
    sum_list = []
    for i in range(len(list1)):
        sum_list.append(list1[i] + list2[i])


return sum_list
Run Code Online (Sandbox Code Playgroud)

为什么需要这样的范围功能?如果我们只使用list1的len,结果会不一样?

Mar*_*ers 6

因为forPython中的循环实际上是每个循环的循环 ; 你需要给它一个迭代循环; 你没有循环一定次数的迭代,你在迭代元素,一个接一个元素.

如果你试图循环只是长度,你会得到一个例外:

>>> for i in 42:
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

对于您的具体示例,您不需要使用range()任何一个,我会使用该zip()函数:

def sum_items(list1, list2):
    sum_list = []
    for i, j in zip(list1, list2)
        sum_list.append(i + j)
    return sum_list
Run Code Online (Sandbox Code Playgroud)

或者,与列表理解相结合:

def sum_items(list1, list2):
    return [i + j for i, j in zip(list1, list2)]
Run Code Online (Sandbox Code Playgroud)

或者使用sum()只是对每个压缩元组中的所有值求和:

def sum_items(list1, list2):
    return [sum(t) for t in zip(list1, list2)]
Run Code Online (Sandbox Code Playgroud)

zip()从每个参数iterables中获取元素并逐个配对元素; [1, 2, 3]['foo', 'bar', 'baz']成为[(1, 'foo'), (2, 'bar'), (3, 'baz')].更多输入参数意味着输出元组中的元素更多.