Python 在列表中查找字符串值并替换它们
我有一个以未知顺序混合的浮点、整数和字符串的列表。我想找到所有字符串值并用0替换它们。问题是,我不知道这个字符串是什么样子,除了它将包含4个字符(十六进制数) 例如,我将有这样一个列表:Python 在列表中查找字符串值并替换它们,python,list,replace,Python,List,Replace,我有一个以未知顺序混合的浮点、整数和字符串的列表。我想找到所有字符串值并用0替换它们。问题是,我不知道这个字符串是什么样子,除了它将包含4个字符(十六进制数) 例如,我将有这样一个列表: h=[1,2,5.3,'00cc',3.2,'085d'] 我想将这些字符串(在本例中为“00cc”和“085d”)替换为零,这样我的最终列表将如下所示: h=[1,2,5.3,0,3.2,0] 我知道在列表中查找字符串或值并替换它的方法,但在我只知道列表元素的类型和长度的情况下,我不会这样做。您可以: h =
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
这里isinstance
检查列表的成员是否属于某种类型(str
akastring
)。该列表已修改到位,没有任何副本 您可以通过以下方式尝试:
我建议使用列表理解,它可以在一行中简单、干净地测试和替换字符串值。列表理解通过测试给定的iterable中的每个元素来创建一个新列表。这一个测试每个元素的类型,并用0替换str类型的元素
>>> 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]
[x如果类型(x)不是str else 0表示h中的x]
[0如果类型(i)是str else i表示h中的i]
>>> 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]
[0 if isinstance(i, (str, unicode)) else i for i in h]