Как переписать список в Python - PullRequest
0 голосов
/ 04 июля 2019

Я написал код о том, как переписать список, и, к счастью, заставил его работать, но не совсем понимаю, как он работает. Если я пытаюсь понять свой собственный код, длина списка не равна 5, а в сочетании с методом диапазона я прошу свой цикл выполнить цикл 5 раз, верно?

2-я часть моего вопроса касается numbs [w]. Numbs [w] ссылается на элемент в списке? До сих пор я узнал, что numbs_list [1] ссылается на позицию 1 в numbs_list, но я не уверен, как работает numbs [w] с левой и правой стороны уравнения.

Это мой первый пост здесь, так что спасибо за вашу помощь!

numbs = [5, 10, 15, 20, 25]

for w in range(len(numbs)):
    numbs[w] = numbs[w] + 5

print(numbs)

Фактический вывод - [10, 15, 20, 25, 30], что я и хотел.

Ответы [ 4 ]

0 голосов
/ 04 июля 2019

Я рекомендую разбить вашу проблему на мелкие кусочки и не пытаться использовать несколько функций, которые вы не понимаете одновременно.Используйте свои заявления для печати, чтобы понять это.

numbs = [5, 10, 15, 20, 25]

#see what value you get from range(len(numbs))
print('range(len(numbs)) = ', range(len(numbs)))

for w in range(len(numbs)):
    #what is the value of w?
    print('w = ', w)

    #print numbs[w] before it is changed
    print('numbs[w] = ', numbs[w])

    numbs[w] = numbs[w] + 5

    #print numbs[w] after it is changed
    print('numbs[w] = ', numbs[w])

    #add another print to separate the loops
    print()

#print numbs after the for each loop has ran
print('new numbs = ', numbs)

Тогда вы можете собрать их все вместе и выяснить, что происходит.

0 голосов
/ 04 июля 2019

Хорошо, поэтому существует такая вещь, как приоритет, означающий, что некоторые части кода оцениваются раньше других.Если у вас есть оператор присваивания (=), правая сторона всегда оценивается перед выполнением присваивания.

Таким образом,

numbs[w] = numbs[w] + 5

оценивается как таковое

# w gets the value from the for loop i.e. 0-4
numbs[0] + 5 # numbs[0] is 5, so this evaluates to 10
numbs[0] = 10 # the assignment takes place after the right side is evaluated

Таким образом, ваш список заканчивается увеличением каждого элемента на 5

Также обратите внимание, что numbs [w] = numbs [w] + 5 можно записать как numbs [w] + = 5

0 голосов
/ 04 июля 2019

Что касается вашего первого вопроса, да, вы просите его повторить 5 раз. Но вот как работает диапазон: range (n) создает последовательность чисел от 0 до n-1, а не от 1 до n. Следовательно,

for w in range(len(numbs)):

повторяет значение w от 0 до 4, т.е. (5-1)

Теперь, для вашего второго вопроса:

Да, ваш код ссылается на элементы numbs. Списки индексируются нулем, то есть элементы индексируются от 0 до n-1. Следовательно всякий раз, когда numbs [w], к элементу numbs по индексу w обращаются.

Например, numbs [0] = 5, numbs [1] = 10 и т. д.

0 голосов
/ 04 июля 2019
for w in range(len(numbs)):

  numbs[w] = numbs[w] + 5

  print(numbs)

Здесь len (numbs) = 5, поэтому range () возвращает последовательность чисел (от 0 до 4) [range () document * с примерами]

numbs [0] относится к первому элементу списка (т.е. 5)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...