[解決済み] set()を{}で置き換えることができるのはなぜですか?
2023-06-30 19:34:48
質問
PyCharmで、以下のように書くと
return set([(sy + ady, sx + adx)])
とあるように 関数呼び出しはセットリテラルに置き換えることができます。 と書いてあるので、それで置き換えています。
return {(sy + ady, sx + adx)}
それはなぜですか?A
set()
は、Python の辞書である
{}
?
また、これを最適化したいのであれば、なぜこの方が効果的なのでしょうか?
どのように解決するのですか?
Pythonの集合と辞書は、どちらも中括弧を使って構築することができます。
my_dict = {'a': 1, 'b': 2}
my_set = {1, 2, 3}
インタープリタ(と人間の読者)は、その内容から両者を区別することができます。 しかし、空集合と空dictを区別することはできないので、この場合は
set()
を使う必要があります。
非常に簡単なテストでは、リテラル構築の方が高速であることが示されています(python3.5)。
>>> timeit.timeit('a = set([1, 2, 3])')
0.5449375328607857
>>> timeit.timeit('a = {1, 2, 3}')
0.20525191631168127
この質問 は、リストとディクテの場合ではありますが、組み込み関数に対するリテラル構文のパフォーマンスに関するいくつかの問題を扱っています。要約すると、リテラル構文はインタプリタからの作業をより少なくするということです。
関連
-
[解決済み】Travis CIでpython setup.pyがinvalid command 'bdist_wheel'と表示されるのはなぜですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] 億の相対的輸入
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み】メソッドの型ヒントは、どのようにエンクロージャクラスの型を使用するのですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?