可以在python中使用list comprehension和两个表达式吗?
I.E:我有一个带点的列表'。'和分号';'我想用第一个作为参数创建一个布尔列表:
我知道如何只使用一个表达式创建:
L1 = [True if i == '.' for i in L2]
或者
L1 = [False if i == ';' for i in L2]
可以在一个列表理解中合并这些clausules吗?
编辑: [。;。;。]应该转换为[真,假,真,假,真]
答案 0 :(得分:4)
要另外防范其他角色,请使用:
L1 = [ch == '.' for ch in L2 if ch in '.;']
答案 1 :(得分:3)
[char == '.' for char in l]
如果字符是句点,则 char == '.'
评估为True,否则评估为False。
如果您需要更复杂的转换,可以使用
mapping = {
'.': True,
';': False,
...
}
[mapping[char] for char in l]
如果您需要过滤掉您正在寻找的字符以外的字符,
[mapping[char] for char in l if char in mapping]