pythonリストの再読み込み方法を知っておくべきです

1933 ワード

前言
ソースデータがどこから来ても、リストに変換する方法では、予想される結果が最終的な結果ではない可能性があります.最も一般的なのは、リストの要素が重複していることです.このとき、最初のことは再処理しなければなりません.
まず、pythonに内蔵されたデータ型setで実現する最も簡単な方法を示します.
リストデータが次のようになっているとします.

level_names = [
 u'Second Level',
 u'Second Level',
 u'Second Level',
 u'First Level',
 u'First Level'
]

集合の要素は重複できないので、リストを集合に変換すると、重複する要素が自動的に削除されます.これが基本原理です.コードは次のとおりです.

>>> the_list = set(level_names)
>>> print(the_list)
set([u'Second Level', u'First Level'])

この方式の欠点は、リストに変換するときに前のリストの順序を保存できないことです.この要求がなければ、この方式が最も簡単です.簡単だと思っている仲間もいるかもしれません.これは技術的な含有量がありませんか.間違いありません.だから、一般的な面接問題では、リストを重くしてもらうのが一般的です.
リストの重さを落とす方法を書いてください(setは使えません)
人はsetを使うことができないことを明記して、だから、この技は时にはまだ使うことができなくて、それはもちろん私达を倒すことができなくて、私达はその他の方法があります.
私达はすべてリストが遍歴することができることを知っていて、问题を遍歴することができて简単で、私达は更に空のリストを定义して、それからデータのリストを遍歴して、更に遍歴する时1つの判断をプラスして、もし空のリストの中でないならば、プラスして、もしあったらなくして、コードは以下の通りです:

the_list = []
for level in level_names:
 if level not in the_list:
  the_list.append(level)
print(the_list)

この方法はまあまあだと思いますが、一般的な小さなリストに対処するのは大丈夫ですが、スーパー大きなリストに遭遇すると、the_リストリストは非常に大きくなり、判断時に効率に影響します.リストはインデックス順に検索されるため、データ量が大きいと遅くなります.
質問するかもしれませんが、大きなリストに出会ったらどうしますか?もっと牛を割る方法はありますか?もちろんあります.続けてみましょう.判断時にリストを使うと効率に影響する以上、私たちは考えを変えて、私たちは集合を使って、あなたは聞くかもしれません.集合はもうすぐですか.そう、setが使用するhash関数の検索値のため、setは無秩序ですが、位置は固定されており、一度で特定の要素が存在するかどうかを調べることができます.ネット上でリストとsetの要素の検索を比較した人がいます.同じデータ条件の下で、listで16分かかり、setで52秒かかります.

the_list = []
the_set = set()
for level in level_names:
 if level not in the_set:
  the_set.add(level)
  the_list.append(level)
print(the_list)

まとめ
以上はこの文章のすべての内容で、本文の内容がみんなの学习あるいは仕事に対して一定の助けをもたらすことができることを望んで、もし疑问があればみんなは伝言を残して交流することができます.