[解決済み] 1つの項目をN回繰り返したリストを作成する
2022-03-15 09:33:06
質問
長さの異なる一連のリストを作成したい。それぞれのリストには、同じ要素
e
が繰り返されます。
n
回(ここで
n
= リストの長さ)。
リスト内包を使わずに、リストを作成するにはどうしたらいいのか
[e for number in xrange(n)]
を各リストに設定することはできますか?
解決方法は?
と書くこともできます。
[e] * n
e が例えば空のリストだった場合、同じリストへの n 個の参照を持つリストが得られ、独立した空のリストが n 個得られるわけではないことに注意してください。
パフォーマンステスト
一見すると と思われる は、n 個の同じ要素を持つリストを作成するには、repeat が最も速い方法です。
>>> timeit.timeit('itertools.repeat(0, 10)', 'import itertools', number = 1000000)
0.37095273281943264
>>> timeit.timeit('[0] * 10', 'import itertools', number = 1000000)
0.5577236771712819
でも、ちょっと待って--公平なテストではないんです......。
>>> itertools.repeat(0, 10)
repeat(0, 10) # Not a list!!!
機能
itertools.repeat
は実際にリストを作成しているわけではなく、希望に応じてリストを作成するために使用できるオブジェクトを作成しているだけです もう一度、リストに変換して試してみましょう。
>>> timeit.timeit('list(itertools.repeat(0, 10))', 'import itertools', number = 1000000)
1.7508119747063233
ですから、リストが必要な場合は
[e] * n
. もし、要素を遅延して生成したいのであれば
repeat
.
関連
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] リスト内包型辞書の作成
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】pandasでカラムの種類を変更する
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
python call matlab メソッドの詳細
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python: OverflowError: 数学の範囲エラー