是否有可能在python列表理解中使用'else'?

这里是我试图变成列表理解的代码:

table = ''
for index in xrange(256):
    if index in ords_to_keep:
        table += chr(index)
    else:
        table += replace_with

有没有办法将else语句添加到这个理解中?

table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)

语法a if b else c是Python中三元运算符的计算结果为a ,如果条件b为真-否则,它的计算结果c 。 它可以用在理解陈述中:

>>> [a if a else 2 for a in [0,1,0,3]]
[2, 1, 2, 3]

所以对于你的例子,

table = ''.join(chr(index) if index in ords_to_keep else replace_with
                for index in xrange(15))

如果你想要else你不想过滤列表理解,你希望它遍历每个值。 true-value if cond else false-value作为语句, true-value if cond else false-value可以使用true-value if cond else false-value ,并从结尾删除过滤器:

table = ''.join(chr(index) if index in ords_to_keep else replace_with for index in xrange(15))

要在Python编程中使用列表解析中的else ,可以尝试下面的代码片段。 这将解决您的问题,该片段在python 2.7和python 3.5上测试。

obj = ["Even" if i%2==0 else "Odd" for i in range(10)]
链接地址: http://www.djcxy.com/p/26807.html

上一篇: Is it possible to use 'else' in a python list comprehension?

下一篇: Detecting peaks in images