Python条件表达式语法无效

时间:2017-02-16 08:26:33

标签: python-3.x list-comprehension

我想使用条件列表推导来返回“有效”的开关列表。有效的开关如下: 前两个字母代表国家/地区,因此[CH]SW002。这些字母必须与当前设备的前两个字母匹配。如果设备是笔记本电脑US[NB]001,则可以忽略国家/地区前缀。

因此,下面的设备应分配以下开关:

  • CHPC001:CHSW002
  • USPC001:USSW001,USSW002
  • USNB001:USSW001,USSW002,CHSW002

下面是我的代码,但它引发了语法错误:

switches = ['USSW001', 'USSW002', 'CHSW002']
devices = ['CHPC001', 'USPC001', 'USNB001']

for device in devices:
    print([sw if 'nb' in device else sw if device[:2] in sw for sw in switches])

1 个答案:

答案 0 :(得分:1)

此处不要使用条件表达式。您希望过滤开关,而不是为每个开关产生不同的结果。

每个开关的条件,表示为一个布尔测试:

device[2:4] == 'NB' or sw[:2] == device[:2]

因此设备是笔记本电脑(因此所有开关都适用),或者国家/地区代码必须匹配。最后将它放在if测试中:

[sw for sw in switches if device[2:4] == 'NB' or sw[:2] == device[:2]]