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のリストで重複する要素のインデックスを効率的に取得することができます。適切な方法を選択することで、特定の問題に対する最適な解決策を見つけることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です