#python #list
#python #Список
Вопрос:
У меня есть вызываемый список quan = [0, 0 ,0, 0]
. Я прошу пользователя ввести целые числа от 0 до 3 и сохранить их в другом списке, называемом items . например: items = [0, 1, 1, 2, 2, 2]
. Для каждого int в items я хочу увеличить соответствующую позицию в quan , т. Е. [1, 2, 3, 0]
В этом случае quan должен стать.
for i in items:
quan[items[i]] = 1
до сих пор все, что я закончил с ошибкой EoL. Толчок в правильном направлении был бы оценен.
Спасибо.
Комментарии:
1. просто сделайте
quan[i] = 1
.i
содержит элемент, а не индекс, поэтому вы можете получить к нему прямой доступ с помощьюquan[i]
.2. Я не вижу причины ошибки конца строки.
Ответ №1:
На заданный вопрос:
quan = [0, 0, 0, 0]
items = [0, 1, 1, 2, 2, 2]
for i in items:
quan[i] = 1
Однако в большинстве реальных ситуаций вы, вероятно, захотите использовать collections.Counter
вместо этого, который предоставляет тот же ответ в несколько иной форме:
from collections import Counter
items = [0, 1, 1, 2, 2, 2]
quan = Counter(items)
Комментарии:
1. Счетчик не поддерживает правильный порядок элементов, так что это, вероятно, не полезная альтернатива.
2. Да; вот почему я предоставил ответ «как просили». Однако в большинстве реальных ситуаций либо порядок элементов не имеет значения, либо счетчик можно сканировать по порядку; в любом случае, использование библиотечной функции обычно лучше, чем написание кода.
3. Вопрос звучит так: «пользователь предоставляет список позиций для увеличения, а затем я хочу увеличить эти позиции» , поэтому позиция элемента важна.
Counter
делает что-то совершенно другое. (Не говоря уже о том, чтоquan
, вероятно, не всегда все равно нулю в начале.)
Ответ №2:
Правильный код:
for i in items:
quan[i] =1
Ошибка EOL может быть вызвана опечаткой где-то в коде.
Ответ №3:
Приведенный ниже цикл кода будет повторяться только 4 раза, а не нет. элементов в списке элементов. count() списка вернет количество вхождений этого элемента.
quan = [0, 0, 0, 0]
items = [0, 1, 1, 2, 2, 2]
for i in range(4):
quan[i] = items.count(i)
print(quan)
или в качестве альтернативы
quan = [quan[i] items.count(i) for i in range(4)]