[解決済み] リスト内の連続した重複を識別する最もPythonicな方法は何でしょうか?
2022-02-19 06:37:35
質問
つまり、各duplesが(int_in_question, number of occurrences)を含む、順序を保持したduplesのリストを生成したいのです。
例えば、こんなリストがあったとします。
[0, 0, 0, 3, 3, 2, 5, 2, 6, 6]
という結果にしたい。
[(0, 3), (3, 2), (2, 1), (5, 1), (2, 1), (6, 2)]
を持っています。 かなり for-loop、temp、counterを使った簡単な方法です。
result_list = []
current = source_list[0]
count = 0
for value in source_list:
if value == current:
count += 1
else:
result_list.append((current, count))
current = value
count = 1
result_list.append((current, count))
しかし、私はpythonの関数型プログラミングのイディオムがとても好きなので、簡単なジェネレータ式でこれができるようになりたいと思っています。しかし、ジェネレータで作業するときにサブカウントを維持するのは難しいと感じています。しかし、ジェネレータを使うときにサブカウントを維持するのは難しいです。2つのステップを踏めばできるような気がしますが、今のところ行き詰まっています。
特にジェネレータを使ったエレガントでピースフルな方法ってありますか?
どのように解決するのですか?
>>> from itertools import groupby
>>> L = [0, 0, 0, 3, 3, 2, 5, 2, 6, 6]
>>> grouped_L = [(k, sum(1 for i in g)) for k,g in groupby(L)]
>>> # Or (k, len(list(g))), but that creates an intermediate list
>>> grouped_L
[(0, 3), (3, 2), (2, 1), (5, 1), (2, 1), (6, 2)]
電池を含む と言わんばかりに。
使用方法のご提案
sum
とジェネレータ式はJBernardoからのコメントです。
関連
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] リストの順番を維持したまま、重複を削除するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeError: リストのインデックスは整数でなければならず、floatではない
-
[解決済み] Prolog-リストを繰り返し実行する
-
[解決済み] リストに指定されたメンバが含まれているかどうかを判断するルールを定義する
-
[解決済み] PrologでListの要素をプリントアウトする
-
[解決済み] Prologでリストを平坦にする
-
[解決済み] ScalaのSeqとListの違いについて
-
[解決済み] Racketで集合を含む集合を見つける方法
-
[解決済み] リスト作成/連結のための構文
-
[解決済み】2つのリストを連結する - '+=' と extend() の違い)
-
[解決済み】大きなリストの中のn番目の項目のリストを返すPythonicな方法