python用整数替换列表中的字符串

Hid*_*den 2 python python-2.7 python-3.x

我有一个列表,其索引主要是整数,但偶尔会有一些“ X”条目。我需要所有条目来使用此列表和另一个列表执行列表操作。我如何替换整数为零的字符串“ X”条目,同时保持列表的长度相同。

我尝试使用if语句替换条目(如果它是'X'的话),但这只是给了我一个类型错误。

示例:更改[X,X,52,39,81,12,X,62,94][0,0,52,39,81,12,0,62,94] 第二个列表中所有条目都为int的形式。

McG*_*ady 5

尝试使用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]
Run Code Online (Sandbox Code Playgroud)

如果使用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]
Run Code Online (Sandbox Code Playgroud)


Eyu*_*lDK 5

首先,您需要改进术语的使用。索引都是整数,元素是字符串和整数的混合。

解决方案

l = ['X', 'X', 52, 39, 81, 12, 'X', 62, 94]
l = [0 if element == 'X' else element for element in l]
print(l)
Run Code Online (Sandbox Code Playgroud)

更好的性能解决方案,具有就地替换功能

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)
Run Code Online (Sandbox Code Playgroud)