首页 > 解决方案 > 如何在列表理解中引用未命名变量?

问题描述

此代码块给出了正确的输出,但是生成数字替换的表达式效率低下,因为它重复了两次相同的表达式。有没有办法通过不重复该短语来使其更简洁?

代码:

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
...

标签: pythonpython-3.x

解决方案


有一种更简单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)]

推荐阅读