某些变量/方程如何影响列表?

时间:2015-03-05 07:38:19

标签: python list range equation

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中完成此过程。

1 个答案:

答案 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 - klen(b)将返回列表b的长度,因此当您从头开始遍历a列表时,您将从末尾迭代b(假设两个列表的长度相同)。 Python将首先执行表达式,因此最终它将访问由该表达式产生的索引处的b项。