def list(a, b):
for k in range(len(a)):
a[k] = a[k] + b[len(b)-1-k]
return a
当涉及到操作列表时,python如何逐行执行类似这样的函数。特别是当我在此代码中显示len()
或[k]
时,它如何影响用户提供的列表?一个例子可能是
当a = [1,3,5,7,9]
,b = [1,4,9,8,6]
返回的a
)值为[7, 11, 14, 11, 10]
时,我不确定如何在Python中完成此过程。
答案 0 :(得分:0)
由于我不知道它如何更改列表,因此我对这个等式中引入
[k]
感到困惑。
someList[k]
是列表中k
项的item accessor。因此,对于列表a = [2, 3, 5, 7]
,a[k]
将返回第k个数字。例如:
>>> a = [2, 3, 5, 7]
>>> a[0]
2
>>> a[1]
3
>>> k = 3
>>> a[k]
7
仅使用访问者只会读取值而不会影响列表。但是,Python允许您为其分配值。这样做会改变该索引处的列表项目:
>>> a = [2, 3, 5, 7]
>>> a[2]
5
>>> a[2] = 13 # we change the value
>>> a[2]
13
>>> a # the original list was modified
[2, 3, 13, 7]
因此,在循环中,当您拥有a[k] = a[k] + something
时,您将获得第k个索引处的值,向其添加something
,然后在同一索引处更新原始列表。由于函数参数是通过引用传递的,因此会更新原始列表(稍后您将从函数中返回相同的列表对象)。
至于“某事”部分,你这样做:b[len(b)-1-k]
。同样,您使用索引来访问列表b
中的单个项目。但这一次,索引不是常量或单个变量,而是更复杂的表达式:len(b) - 1 - k
。 len(b)
将返回列表b
的长度,因此当您从头开始遍历a
列表时,您将从末尾迭代b
(假设两个列表的长度相同)。 Python将首先执行表达式,因此最终它将访问由该表达式产生的索引处的b项。