是替换列表中元素的有效方法。 例如,我想将“香蕉”替换为3
thislist = ["apple", "banana", "cherry", "banana", "banana"]
thislist[thislist == "banana"] = 3
通过执行上述代码,将与Apple对应的第一行(而不是香蕉)更改为int 3。
如果我们可以跳过对FOR-LOOP的使用,将会很有趣
真的很感谢有人可以指出正确的方向
答案 0 :(得分:2)
您可以使用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)
答案 1 :(得分:1)
为避免for循环,可以尝试使用列表的index()方法,如下所示: 我= thislist.index('banana') 此列表[i] = 3
答案 2 :(得分:1)
有了SELECT * FROM tbl_name
WHERE DAYOFMONTH(date_column) = 0 OR MONTH(date_column) = 0
ORDER BY ID
解决方案时,几乎总是有numpy
版本的解决方案,仅供参考。
pandas
输出:
['apple',3,'cherry',3,3]