python - 如何在列表理解中引用未命名变量?
问题描述
此代码块给出了正确的输出,但是生成数字替换的表达式效率低下,因为它重复了两次相同的表达式。有没有办法通过不重复该短语来使其更简洁?
代码:
numphrase = {3: "three", 5: "five"}
result = [''.join([numphrase.get(key) for key in numphrase if not num % key])
if ''.join([numphrase.get(key) for key in numphrase if not num % key]) else
num for num in range(101)]
print(*result, sep="\n")
输出:
threefive
1
2
three
4
five
...
解决方案
有一种更简单x if x else y
的 Python 编写方法,那就是x or y
.
所以你可以把你的理解写成
result = [''.join([numphrase.get(key) for key in numphrase if not num % key]) or num
for num in range(101)]
推荐阅读
- c# - 使用 Oid/ASNEncodeData 创建 PublicKey 会引发 CryptographyException
- javascript - 如何通过使用反应或javascript动态计算顶部和左侧位置来相对于两个元素放置一个元素?
- python - 如何使用 .maketrans() 和 .unicodedata() 从 Python 3.x 中删除标点符号和特殊字符?
- javascript - 数据结构和算法
- vb.net - vb.net 表单处理来自另一个表单的事件
- arrays - 查找仅包含二进制数组的最大非连续子集
- multilabel-classification - 使用 multilabel_binarizer 后如何从列号获取类名?
- python-2.7 - openstackclient:引发异常:无法导入名称 redirect_stdout
- python - 如何绘制串行数据
- c++ - OpenSSL:使用 ECC 公钥加密对称密钥