我想使用条件列表推导来返回“有效”的开关列表。有效的开关如下:
前两个字母代表国家/地区,因此[CH]SW002
。这些字母必须与当前设备的前两个字母匹配。如果设备是笔记本电脑US[NB]001
,则可以忽略国家/地区前缀。
因此,下面的设备应分配以下开关:
下面是我的代码,但它引发了语法错误:
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])
答案 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]]