我有一个字符串,我需要在忽略大小写的列表中查找索引。
MG
['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
我想在下面的行中找到 MG 的索引作为列表。
我有一个字符串,我需要在忽略大小写的列表中查找索引。
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()
将产生它们。
这还具有稍微便宜一点的好处,因为不需要创建整个小写列表;只有尽可能多的列表被处理以找到下一个匹配项。
您可以通过将总列表和要搜索的项目转换为小写来忽略大小写。
>>> 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
与第一个相同,但如果您只对索引感兴趣,我认为不需要创建新旧列表
>>> 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