列表理解有两个条件

时间:2014-03-22 22:29:06

标签: python list

可以在python中使用list comprehension和两个表达式吗?

I.E:我有一个带点的列表'。'和分号';'我想用第一个作为参数创建一个布尔列表:

  • Dot = True
  • 分号=假

我知道如何只使用一个表达式创建:

L1 = [True if i == '.' for i in L2]

或者

L1 = [False if i == ';' for i in L2]

可以在一个列表理解中合并这些clausules吗?

编辑: [。;。;。]应该转换为[真,假,真,假,真]

2 个答案:

答案 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]