簡體   English   中英

在列表中查找字符串值並替換它們

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM