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的形式。
尝试使用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)
首先,您需要改进术语的使用。索引都是整数,元素是字符串和整数的混合。
解决方案
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)
| 归档时间: |
|
| 查看次数: |
9561 次 |
| 最近记录: |