简化if-else中的多个or语句



我有这个代码来搜索列表中的文本以及文本的一部分

if issi in self.issi_list 
or issi[:2] in self.issi_list 
or issi[:3] in self.issi_list 
or issi[:4] in self.issi_list 
or issi[:5] in self.issi_list 
or issi[:6] in self.issi_list:

我希望像一样用发电机来代替它们

if issi in self.issi_list or [issi[:x] in self.issi_list for x in range(2, 6)]:

但它似乎不起作用。我是不是完全走错了路?

不完全:

if issi in self.issi_list or any([issi[:x] in self.issi_list for x in range(2, 7)]):
  1. 您生成了一个单独测试结果的列表,但没有将它们合并
  2. range上升到,但不包括第二个参数

最新更新