list.index() を使用して中間リストを使用しない最も簡単な方法:
z = ['a', 'b', 'a', 'c', 'b', 'a', ]
[z[i] for i in range(len(z)) if i == z.index(z[i])]
>>>['a', 'b', 'c']
また、重複自体を一覧表示することもできます (例のように重複が含まれる場合もあります)。
[z[i] for i in range(len(z)) if not i == z.index(z[i])]
>>>['a', 'b', 'a']
またはそれらのインデックス:
[i for i in range(len(z)) if not i == z.index(z[i])]
>>>[2, 4, 5]
または、インデックスの2タプルのリストとしての重複(最初の出現のみを参照)、元の質問に対する答えは何ですか!!! :
[(i,z.index(z[i])) for i in range(len(z)) if not i == z.index(z[i])]
>>>[(2, 0), (4, 1), (5, 0)]
またはこれをアイテム自体と一緒に:
[(i,z.index(z[i]),z[i]) for i in range(len(z)) if not i == z.index(z[i])]
>>>[(2, 0, 'a'), (4, 1, 'b'), (5, 0, 'a')]
または要素とインデックスの他の組み合わせ....