[解決済み] 2つの弦をインターリーブさせる最もピトニックな方法
2022-05-13 20:38:32
質問
2つの文字列を結合する最もパイソン的な方法は何でしょうか?
例えば
入力します。
u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'
出力します。
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
どのように解決するのですか?
私にとっては、最も Pythonic* な方法は次のようなものです。
はほとんど同じことをします
しかし
+
演算子を使って各文字列を連結しています。
res = "".join(i + j for i, j in zip(u, l))
print(res)
# 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
また、2つの
join()
の呼び出しを2回行うよりも高速です。
In [5]: l1 = 'A' * 1000000; l2 = 'a' * 1000000
In [6]: %timeit "".join("".join(item) for item in zip(l1, l2))
1 loops, best of 3: 442 ms per loop
In [7]: %timeit "".join(i + j for i, j in zip(l1, l2))
1 loops, best of 3: 360 ms per loop
より高速なアプローチは存在しますが、それらはしばしばコードを難解にします。
注意してください。
もし二つの入力文字列が
ではない
である場合、長い方が切り捨てられ
zip
は短い方の文字列の末尾で反復処理を停止します。この場合、代わりに
zip
を使うべきでしょう。
zip_longest
(
izip_longest
を Python 2 の場合) から
itertools
モジュールから、両方の文字列が完全に使い果たされることを確認します。
*引用元
Python の禅
:
読みやすさのカウント
.
ピソニック =
読みやすさ
私の場合
i + j
の方が視覚的に解析されやすいのです、少なくとも私の目には。
関連
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] 2つの弦をインターリーブさせる最もピトニックな方法
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] asyncio.ensure_future vs. BaseEventLoop.create_task vs. simple coroutine?
-
[解決済み] 集合からランダムな選択? python
-
[解決済み] Pythonで関数の引数として辞書の項目を渡すには?重複
-
[解決済み] pathlib.Pathオブジェクトの絶対パスを取得するには?
-
[解決済み] 条件を満たした場合にNumpyの要素を置き換える
-
[解決済み] 乱数の行列を作成する簡単な方法