我有一个 python 程序,它打印出一些由其他 python 程序创建的列表,格式如下:
[0, [], 0, 1, [], 1]
我想将 0 和 1 更改为字母,即在上面的输入中,我想要
[x, [], x, y, [], y]
作为输出
到目前为止,我执行此操作的代码如下所示:
for x in search.Search(s, s.run()):
if x == 0:
return x
elif x == 1
return y
我知道我遗漏了一些东西,但我不太确定是什么 :(
最佳答案
使用列表理解:
subst = {0: 'x', 1: 'y'}
return [subst.get(v, v) if v else v for v in search.Search(s, s.run()]
通过使用 return
可以提前退出循环。
if v else v
有助于避免尝试将空列表用作键(这会引发 TypeError;列表不可散列,因此不允许用作键)。替代策略是:
from collections import Hashable
subst = {0: 'x', 1: 'y'}
hashable = lambda v: isinstance(v, Hashable)
return [subst.get(v, v) if hashable(v) else v for v in search.Search(s, s.run()]
subst
映射更容易扩展;但是使用函数来映射值(如 Jacob's answer 中所用)对您来说可能更具可读性。
关于python - 如何将数字形式的 python 列表转换为字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989912/