ホームページ >バックエンド開発 >Python チュートリアル >Pythonでリストから重複を削除するいくつかの方法

Pythonでリストから重複を削除するいくつかの方法

不言
不言オリジナル
2018-04-09 17:30:223433ブラウズ

この記事では主に Python でリストから重複を削除するさまざまな方法を紹介します。必要な友人はそれを参照してください。

今日、同僚からの何気ないアドバイスを受けて、itertools を使用しました。グループバイ機能。しかし、これは結局使われませんでした。

問題は、リスト内のニュース ID を重複排除した後、順序を変更しない必要があることです。

直感的な方法

最も単純なアイデアは次のとおりです:


コードをコピーしますコードは次のとおりです:

ids = [1,2,3,3,4,2,3,4,5,6,1]
news_ids = []
for id in ids:
    if id not in news_ids:
        news_ids.append(id)
print news_ids

これも実行可能ですが、見た目が十分ではありません。

setを使用する

もう1つの解決策はsetを使用することです:

コードをコピーしますコードは次のとおりです:

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))


結果は、元の順序が維持されません。

インデックスで再度並べ替えます

最終的にこの方法で解決します:

コードをコピーします コードは次のとおりです:

ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(ids.index)

itertools.grouby を使用します

記事の冒頭で itertools.grouby について言及しましたそうでない場合は、リストの順序を考慮する場合は、これを使用できます:

コードをコピーします コードは次のとおりです:

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()
it = itertools.groupby(ids)
for k, g in it:
    print k

itertools.groupby の原理については、ここで参照できます: http:/ /docs.python.org/2/library/itertools.html#itertools.Netizen groupby

が追加されました: Use Reduce

Netizen realk は別の解決策についてのメッセージを残しました。ここに追加して説明します:

コードをコピー コードは次のとおりです:

In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]
In [6]: func = lambda x,y:x if y in x else x + [y]
In [7]: reduce(func, [[], ] + ids)
Out[7]: [1, 4, 3, 2, 5, 6]


上記は ipython で実行するコードです。ラムダ x,y:x if y in x else x + [y ] など。ラムダ x,y の原子価: x および x の y または x+[y] 。

そのアイデアは、まず ID を [[]、1、4、3、...] に変更してから、reduce 機能を使用することです。 Reduce の説明については、こちらを参照してください: http://docs.python.org/2/library/functions.html#reduce

以上がPythonでリストから重複を削除するいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。