[英]python replace string in list with integer
我有一個列表,其索引大多是整數,但偶爾會有一些'X'條目。 我需要所有條目來使用此列表和另一個列表執行列表操作。 如何用整數零替換字符串的'X'條目,同時保持列表長度相同。
我嘗試使用if語句替換條目,如果它是'X',但這只是給了我一個類型錯誤。
示例:將[X,X,52,39,81,12,X,62,94]
更改為[0,0,52,39,81,12,0,62,94]
,其中第二個列表中的所有條目是int。
嘗試使用map
來執行此操作:
>>> l= ['X','X',52,39,81,12,'X',62,94]
>>>
>>> map(lambda x:0 if x=="X" else x,l)
[0, 0, 52, 39, 81, 12, 0, 62, 94]
如果你使用的是Python3.x, map()
返回迭代器,所以你需要使用list(map())
將它轉換為list。
或者使用列表理解:
>>> [i if i!='X' else 0 for i in l]
[0, 0, 52, 39, 81, 12, 0, 62, 94]
首先,您需要改進術語的使用。 索引都是整數,它是字符串和整數混合的元素。
解
l = ['X', 'X', 52, 39, 81, 12, 'X', 62, 94]
l = [0 if element == 'X' else element for element in l]
print(l)
更好的性能解決方案,具有就地更換功能
l = ['X', 'X', 52, 39, 81, 12, 'X', 62, 94]
for i in range(len(l)):
l[i] = 0 if l[i] == 'X' else l[i]
print(l)
如果性能是一個問題,你可以使用numpy
:
>>> import numpy as np
>>> a=np.array(['X','X',52,39,81,12,'X',62,94])
>>> a[a=='X']=0
>>> a
array(['0', '0', '52', '39', '81', '12', '0', '62', '94'],
dtype='|S2')
那么如果你想要所有的整數:
>>> a.astype(int)
array([ 0, 0, 52, 39, 81, 12, 0, 62, 94])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.