вы можете использовать enumerate
, чтобы получить индекс текущего элемента в вашем списке:
thislist = ["apple", "banana", "cherry", "banana", "banana"]
for i, fruit in enumerate(thislist):
if fruit == 'banana':
thislist[i] = 3
, чтобы объяснить, что происходит в вашем коде:
thislist == "banana"
всегда False
(сравнение str
с list
) thislist[False] == thislist[0]
(как False == 0
) thislist[0] = 3
: выУстанавливайте только первый элемент.
, если вы хотите использовать numpy
, то же самое можно сделать и без (явного) цикла for
(хотя не в обычном Python...)
import numpy as np
a = np.array(["apple", "banana", "cherry", "banana", "banana"])
a[a == 'banana'] = 3
обратите внимание, что множественные замены могут быть выполнены только с одной петлей for
:
repl = {'banana': 3, 'cherry': 5}
for i, fruit in enumerate(thislist):
if fruit in repl:
thislist[i] = repl[fruit]
print(thislist)