Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表中查找字符串值并替换它们_Python_List_Replace - Fatal编程技术网

Python 在列表中查找字符串值并替换它们

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 =

我有一个以未知顺序混合的浮点、整数和字符串的列表。我想找到所有字符串值并用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
这里
isinstance
检查列表的成员是否属于某种类型(
str
aka
string
)。该列表已修改到位,没有任何副本

您可以通过以下方式尝试:


我建议使用列表理解,它可以在一行中简单、干净地测试和替换字符串值。列表理解通过测试给定的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]