#python-3.x #list #loops
Вопрос:
#vl = [40.08, 36.6, 41.0, 35.2, 41.0]
indices = []
for x in vl:
if x == max(vl):
indices.append(vl.index(x))
print(indices)
**Здесь максимальный элемент 41 присутствует 2 раза в списке при индексах 2 и 4. Таким образом, эти индексы должны быть добавлены к индексам списка. Я получаю результат как [2,2] вместо [2,4]. Может ли кто-нибудь, пожалуйста, сказать мне, что не так с этим кодом? **
Комментарии:
1.
.index
также возвращает первый индекс значения в списке. Поскольку значения равны, один и тот же индекс возвращается дважды.2. @MegaIng Спасибо тебе! Пожалуйста, скажите мне, какой метод я могу использовать здесь, чтобы получить результат, который я ищу. Заранее спасибо!
3. для x в диапазоне(len(vl)): если vl[x] == max(vl): индексы.добавить(x) печать(индексы)
4. 👆 🏻 Приведенный выше код сработал для меня
5. Проверять
enumerate(vl)
Ответ №1:
Вы получаете, [2, 2]
как index()
всегда, индекс первого совпадения.
Я думаю, вы хотите проверить enumerate()
здесь, так как это даст вам индексы, которые вы ищете, в дополнение к значениям.
Через Понимание Списка:
vl = [40.08, 36.6, 41.0, 35.2, 41.0]
indices = [index for index, value in enumerate(vl) if value == max(vl)]
print(indices)
Через Традиционную Петлю:
vl = [40.08, 36.6, 41.0, 35.2, 41.0]
indices = []
for index, value in enumerate(vl):
if value == max(vl):
indices.append(index)
print(indices)
оба должны дать вам:
[2, 4]
Комментарии:
1. Спасибо! Это полезно.