Как увеличить значение внутри списка в python?

#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)]