对于单行语法
else
需要套房(例如。
ab.append(c) if c in ['a','b'] else pass for c in list(string)
). 但是,在语法中不允许语句作为操作数。
你在找
list comprehensions
(例如。
ab = [c if c in ['a','b'] else None for c in list(string)]
). 然而,这可能会
None
在你的名单上,我不相信你想要。列表理解在这些情况下有特殊的语法糖。只需将测试表达式移到末尾(例如。
ab = [c for c in list(string) if c in ['a','b']]
).
在您的特定情况下,另一种方法是
filter
. 这对于测试函数冗长或复杂的情况特别有用。示例如下:
def is_valid_char(c):
return c in ['a','b','c','d','e','f','A','B','C','D','E','F']
ab = list(filter(is_valid_char, list(string)))
最后,字符串是可iterable的,因此不需要为此目的将字符串转换为列表(例如。
ab = filter(is_valid_char, string)
).