11

ケースを無視してリスト内のインデックスを見つける必要がある文字列があります。

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

次の行の MG のインデックスをリストとして見つけたいと思います。

4

3 に答える 3

21

これを行うより洗練された方法の 1 つは、ジェネレーターを使用することです。

>>> 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 に答える