python - 如何将数字形式的 python 列表转换为字母?

标签 python list for-loop

我有一个 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/

相关文章:

python - 为分配给一行值的列表列表中的元素分配一个值

java - 排序列表列表

java - java中递归地将字符串追加到字符串列表中

python - ArcGIS中栅格属性表制作问题

python - 从 PyQt 事件循环中执行 Python 代码

batch-file - DOS FOR 循环中可以有多个 EOL 字符吗?

javascript - JavaScript 中的定时 for 循环

java - 如何删除循环中字符串中的最后一个分隔符?

python - Django根据G​​ET请求从数据库查询过滤后的数据

python - Pandas:使用 bool 掩码替换多列的值