[英]Find string values in list and replace them
我有一個列表,其中包含以未知順序混合的浮點數,整數和字符串。 我想查找所有字符串值並將它們替換為0。問題是我不知道這個字符串看起來會是什么樣,除了它將包含4個字符(十六進制數字)。
因此,例如,我將有這樣一個列表:
h = [1, 2, 5.3, '00cc', 3.2, '085d']
我想將這些字符串(在此示例中為“ 00cc”和“ 085d”)替換為零,以便最終列表如下所示:
h = [1, 2, 5.3, 0, 3.2, 0]
我知道在列表中查找字符串或值並將其替換的方法,但是當我只知道列表元素的類型和長度時,這種方法是不可行的。
你可以做:
h = [1, 2, 5.3, '00cc', 3.2, '085d']
for i, x in enumerate(h):
if type(x) == str:
h[i]=0
for X in xrange(0,len(h)):
if isinstance(h[X],str): h[X]=0
這里isinstance
檢查列表的成員是否是某種類型的( str
又名string
在這種情況下)。 該列表已就地修改,沒有任何副本。
您可以通過列表理解來嘗試:
[0 if type(i) is str else i for i in h]
我建議使用列表理解,它可以在一行中簡單,干凈地測試和替換字符串值。 列表理解通過測試給定迭代器中的每個元素來創建一個新列表。 這將測試每個元素的類型,並將str類型的元素替換為0。
>>> h = [1, 2, 5.3, '00cc', 3.2, '085d']
>>> i = [0 if type(element) == str else element for element in h]
>>> i
[1, 2, 5.3, 0, 3.2, 0]
如果我沒記錯的話,最好不要使用is
檢查類型,而應該使用isinstance
。 我包括unicode以防萬一,但可以刪除。
[0 if isinstance(i, (str, unicode)) else i for i in h]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.