#python #python-3.x
#python #python-3.x
Вопрос:
for i in A:
if i < 0:
A[i] == abs(i)
Как я могу использовать текущий элемент в цикле for, я хочу сделать текущий элемент положительным, если он отрицательный.
Комментарии:
1. Какой тип
A
? Это должно сработать, если это словарь, это не будет работать для списка.2.
==
для равенства используйте=
3. в python мы предлагаем создать новый список с новыми значениями и присвоить старой переменной.
4. @MitchelPaulin смехотворно, обычно ошибка в другом направлении.
5. Можете ли вы привести пример того, что
A
такое?
Ответ №1:
i
вот значение каждого элемента в вашем списке. Обычно i
ссылается на индекс, который побудил вас написать A[i]
ссылку на текущий элемент. Но A[i]
это не то, что вы хотите, и это даже может быть ошибкой, в зависимости от значений в A
.
Вам нужен индекс для изменения значений в списке. Один из способов получить индекс — использовать enumerate()
:
for index, value in enumerate(A):
if value < 0:
A[index] = abs(value)
Обратите внимание на использование значимых имен переменных, чтобы вы не запутались.
Ответ №2:
Когда вы говорите, for i in A
то на каждой итерации i
будет элемент в A, а не интерактивный индекс. Что вы хотите сделать, это что-то вроде этого:
for i, element in enumerate(A):
if element < 0:
A[i] = abs(element)
Ответ №3:
Мне нравится функциональность перечисления стандартной библиотеки python3 для достижения вашей цели. Например, если у вас было следующее:
A = [4, 2, -3, 5, -2]
Вы могли бы сказать:
for index, value in A:
if value < 0:
A[index] = abs(value)
Ответ №4:
Вы можете использовать enumerate()
для перебора как элементов, так и индексов списка. Если вы просто выполняете обычную итерацию по списку, i
это элемент списка, а не индекс, поэтому его нет смысла использовать A[i]
.
for i, el in enumerate(A):
if el < 0:
A[i] = abs(el)
Ответ №5:
Это также можно сделать в понимании списка:
A = [abs(x) if x < 0 else x for x in A ]
Комментарии:
1. Это можно сократить до
[abs(x) for x in A]
2. да, это возможно, но поскольку в их исходном коде было выражение if, я хотел остаться верным этому, чтобы показать им, как это утверждение будет работать в понимании списка