[解決済み】リスト内の2つの要素ごとに繰り返し処理を行う【重複あり
2022-04-04 13:32:34
質問
<余談
を作るにはどうしたらいいのでしょうか?
for
ループかリスト内包で、繰り返しごとに2つの要素が得られるようにするか?
l = [1,2,3,4,5,6]
for i,k in ???:
print str(i), '+', str(k), '=', str(i+k)
出力します。
1+2=3
3+4=7
5+6=11
どのように解決するのですか?
が必要です。
pairwise()
又は
grouped()
) を実装しています。
def pairwise(iterable):
"s -> (s0, s1), (s2, s3), (s4, s5), ..."
a = iter(iterable)
return zip(a, a)
for x, y in pairwise(l):
print("%d + %d = %d" % (x, y, x + y))
あるいは、もっと一般的に
def grouped(iterable, n):
"s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
return zip(*[iter(iterable)]*n)
for x, y in grouped(l, 2):
print("%d + %d = %d" % (x, y, x + y))
Python 2 では、インポートする必要があります。
izip
を、Python 3 の組み込みの
zip()
関数を使用します。
すべてのクレジットは マティーノ について 彼の答え に 質問 この方法は、リストに対して一度だけ反復処理を行い、その過程で不要なリストを作成しないので、非常に効率的であることがわかりました。
N.B
: と混同しないでください。
pairwise
レシピ
をPythonの独自の
itertools
ドキュメンテーション
となり、その結果
s -> (s0, s1), (s1, s2), (s2, s3), ...
で指摘されているように
をクリックします。
をコメントで紹介しました。
でタイプチェックを行いたい方のためのちょっとした補足です。 マイピー をPython 3上で使用することができます。
from typing import Iterable, Tuple, TypeVar
T = TypeVar("T")
def grouped(iterable: Iterable[T], n=2) -> Iterable[Tuple[T, ...]]:
"""s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), ..."""
return zip(*[iter(iterable)] * n)
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python関数の高度な応用を解説
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PicgoのイメージベッドツールをPythonで実装する
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] リストを均等な大きさの塊に分割するには?