2015-03-05 3 views
-1
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

Я не понимаю ваш вопрос. Что вы подразумеваете под «выполнением функции из строки за строкой»? – poke

+0

Посмотрите, как Python смотрит на код и выполняет его. –

ответ

0

В основном меня смущает введение [k] в уравнение, поскольку я не знаю, как он меняет список.

someList[k] является item accessor для k го элемента списка. Поэтому для списка 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, вы получите значение в индексе -го, добавьте something к нему, а затем обновить первоначальный перечень на тот же индекс. Поскольку параметры функции передаются по ссылкам, это обновляет исходный список (и вы позже возвращаете идентичный объект списка из своей функции).

Что касается части «что-то», вы делаете это: b[len(b)-1-k]. Опять же, вы используете индекс для доступа к одному элементу списка b. Но на этот раз индекс не является константой или одной переменной, а более сложным выражением: len(b) - 1 - k. len(b) вернет длину списка b, так что предельно, поскольку вы перебираете список a с самого начала, вы делаете итерацию b с конца (при условии, что для обоих списков одинаковая длина). Сначала Python выполнит выражение, поэтому в конце он получит доступ к элементу b в индексе, который возникает из этого выражения.

+0

Спасибо! Это ответило на все мои вопросы –

Смежные вопросы