Изменить значения в списке с помощью цикла for (python) - PullRequest
0 голосов
/ 04 марта 2019

В настоящее время у меня есть некоторый код, который выглядит следующим образом:

letters = {
10 : "A",
11 : "B",
12 : "C",
13 : "D",
14 : "E",
15 : "F"
}
vallist = [rd1, rd2, gd1, gd2, bd1, bd2]
for i in vallist:
    if i >= 10:
        i = letters[i]

То, что я хочу сделать, это цикл for для итерации по vallist и замены любого значения, которое больше 10, на соответствующую букву,Тем не менее, мой текущий код просто меняет i, а не оригинальное значение в списке.Например, если для rd1 установлено значение 15, код выполняется, а для i установлено значение "F", но rd1 не изменяется на "F", а вместо этого остается равным 15. Как исправитьэто?

Ответы [ 4 ]

0 голосов
/ 04 марта 2019

на самом деле я - ссылка на этот элемент массива, и изменения значения не будут затронуты этим элементом, вместо этого попробуйте это,

# итерируя по каждому индексу массива

for i in range(len(vallist)):
 if vallist[i] >= 10 and vallist[i]<=15:
      vallist[i] = letters[vallist[i]]
0 голосов
/ 04 марта 2019
rd1, rd2, gd1, gd2, bd1, bd2 = 10, 11, 12, 13, 14, 9
letters = {
10 : "A",
11 : "B",
12 : "C",
13 : "D",
14 : "E",
15 : "F"
}
vallist = [rd1, rd2, gd1, gd2, bd1, bd2]
for index, value in enumerate(vallist):
    if value >= 10 and value <= 15:
        vallist[index] = letters[value]
print(vallist)

Как уже упоминалось в другом комментарии, вам нужен и индекс, и значение при циклическом просмотре вашего vallist.так что вы можете заменить значение в индексе значением в своем словаре.

0 голосов
/ 04 марта 2019
for i in range(len(vallist)):
    if vallist[i] >= 10:
        vallist[i] = letters[i]

Потому что в вашем случае я всего лишь копия текущего элемента в Vallist.Но в этом случае я буду индексом, поэтому вы можете изменить исходный список с его помощью.

0 голосов
/ 04 марта 2019

Для каждой итерации цикла for переменной i присваивается только копия значения элемента в vallist, поэтому внесенные в i изменения не будут отражены в i.

Вы должны обновить элементы i через индекс, который вы можете сгенерировать с помощью функции enumerate:

for index, value in enumerate(vallist):
    if value >= 10:
        vallist[index] = letters[value]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...