python - 如何让我的代码更 Pythonic?

标签 python

<分区>

我需要将一些字母替换为带有数字的列表(每个字母都编码为一个数字)。我使用了这个结构:

r = []
for x in some_list:
    if x in "ABCDE":
        r.append({"A":10, "B":20, "C":30, "D":40, "E":50}[x])
    else:
        r.append(int(x)) # convert string digit to digit
some_list = r

(some_list 在这段代码中是可变的)。

我想问下python中有没有一些更紧凑的结构(更少的代码)可以使这种编码和运行速度更快。

最佳答案

怎么样

d = {"A":10, "B":20, "C":30, "D":40, "E":50}
some_list = [int(d.get(x, x)) for x in some_list]

其他编写列表推导式的方法包括:

some_list = [d.get(x) or int(x) for x in some_list]
some_list = [d[x] if x in d else int(x) for x in some_list]

关于python - 如何让我的代码更 Pythonic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744796/

相关文章:

python - 如何使用请求下载图像

python - 如何将flappybird游戏的分数存储到sql数据库中

python - 如果将最小的正浮点值乘以一个非零数,是否保证得到非零结果?

Python selenium 进入#document

python - 将 dialog.ui 转换为 dialog.py 与 QGIS 的冲突

python - 如何在 Pandas 中填充行不为 NULL 的列名?

PHP脚本无法正确运行python脚本,但它在终端上正确运行

python - 使用 lambda 函数在嵌套列表中查找总和

python - pip3命令升级所有包,注意依赖冲突?

python - 是否有任何工具可以显示在项目中运行的文件的顺序?