11

我有一个字符串,我需要在忽略大小写的列表中查找索引。

MG
['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']

我想在下面的行中找到 MG 的索引作为列表。

4

3 回答 3

21

一种更优雅的方法是使用生成器:

>>> 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()将产生它们。

这还具有稍微便宜一点的好处,因为不需要创建整个小写列表;只有尽可能多的列表被处理以找到下一个匹配项。

于 2013-03-14T22:45:45.433 回答
6

您可以通过将总列表和要搜索的项目转换为小写来忽略大小写。

>>> 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
于 2013-03-14T22:26:13.593 回答
0

与第一个相同,但如果您只对索引感兴趣,我认为不需要创建新旧列表

>>> 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
于 2019-02-17T08:58:27.710 回答