2024-05-28 23:54:12 发布
网友
我有一个字符串,我需要在一个忽略情况的列表中找到索引。
MG ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
我想在下一行找到MG的索引作为一个列表。
其中一个更优雅的方法是使用生成器:
>>> list = ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12'] >>> next(i for i,v in enumerate(list) if v.lower() == 'mg') 3
上面的代码生成一个生成器,该生成器生成列表中下一个不区分大小写的mg的索引,然后调用next()一次以检索第一个索引。如果您在列表中多次出现mg,则重复调用next()将产生所有这些结果。
mg
next()
这还有一个好处,就是成本稍微低一点,因为不需要创建一个完整的小写列表;只需要处理尽可能多的列表来找到下一个匹配项。
通过将总列表和要搜索的项转换为小写,可以忽略这些情况。
>>> to_find = 'MG' >>> old_list = ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12'] >>> new_list = [item.lower() for item in old_list] >>> new_list.index(to_find.lower()) 3
与first相同,但如果您只对索引感兴趣,则不需要创建新的和旧的列表
>>> search_term ="MG" >>> my_list = ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12'] >>> [item.lower() for item in my_list ].index(search_term .lower()) 3
其中一个更优雅的方法是使用生成器:
上面的代码生成一个生成器,该生成器生成列表中下一个不区分大小写的
mg
的索引,然后调用next()
一次以检索第一个索引。如果您在列表中多次出现mg
,则重复调用next()
将产生所有这些结果。这还有一个好处,就是成本稍微低一点,因为不需要创建一个完整的小写列表;只需要处理尽可能多的列表来找到下一个匹配项。
通过将总列表和要搜索的项转换为小写,可以忽略这些情况。
与first相同,但如果您只对索引感兴趣,则不需要创建新的和旧的列表
相关问题 更多 >
编程相关推荐