Pythonのリストで重複する要素のインデックスを取得する方法について説明します。この問題は、データ分析やアルゴリズムの実装など、さまざまな場面で遭遇する可能性があります。
方法1: enumerate
とリスト内包表記を使用する
Pythonのenumerate
関数とリスト内包表記を使用して、リスト内の重複要素のインデックスを取得することができます。
mylist = ['A', 'B', 'A', 'C', 'E']
indices = [i for i, x in enumerate(mylist) if mylist.count(x) > 1]
print(indices) # Output: [0, 2]
このコードは、リストmylist
の各要素について、その要素がリスト内に複数存在する場合(mylist.count(x) > 1
)、その要素のインデックスを取得します。
方法2: collections.defaultdict
を使用する
collections.defaultdict
を使用すると、リスト内のすべての要素のインデックスを効率的に取得できます。
from collections import defaultdict
def list_duplicates(seq):
tally = defaultdict(list)
for i,item in enumerate(seq):
tally[item].append(i)
return ((key,locs) for key,locs in tally.items() if len(locs)>1)
source = "ABABDBAAEDSBQEWBAFLSAFB"
for dup in sorted(list_duplicates(source)):
print(dup)
このコードは、リスト内の各要素のインデックスをdefaultdict
に格納し、その後、複数のインデックスを持つ要素(つまり、リスト内で重複する要素)を返します。
これらの方法を使用すると、Pythonのリストで重複する要素のインデックスを効率的に取得することができます。適切な方法を選択することで、特定の問題に対する最適な解決策を見つけることができます。