競技コーディングのためのPythonの秘訣
Pythonは、ほとんどの競技プログラミングの課題でコーダーの間で好まれる言語の1つです。ほとんどの問題は、Pythonを使用して妥当な時間枠で簡単に計算できます。
複雑な問題のいくつかについては、十分に高速なPythonコードを書くことがしばしば課題になります。以下は、競技コーディングでコードのパフォーマンスを向上させるのに役立つpythonicコード構造の一部です-
1。文字列の連結 :以下の構成は使用しないでください。
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] for x in some_list: str1 += x print(str1)
上記の方法では、膨大な時間のオーバーヘッドが発生します。代わりに、これを使用してみてください(結合方法)-
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] print(str1.join(some_list))
2。マップ機能
一般的に、競技コーディングには、-
のような入力があります。1234567
それらを数字のリストとして簡単に取得するには
list(map (int, input().split()))
入力の種類に関係なく、常にinput()関数を使用してから、map関数を使用して変換してください。
>>> list(map(int, input("enter numbers:").split())) enter numbers:1 2 3 4 5 6 7 [1, 2, 3, 4, 5, 6, 7] >>>
map関数は、Pythonの美しい組み込み関数の1つであり、何度も便利です。知る価値があります。
3。コレクションモジュール
リストから重複を削除したい場合。 Javaのような他の言語では、HashMapやその他の奇妙な方法を使用する必要があるかもしれませんが、Pythonでは単純に
>>> print(list(set([1,2,3,4,3,4,5,6]))) [1, 2, 3, 4, 5, 6]
また、2つ以上のリストをマージするときは、リストでextend()とappend()を使用するように注意してください。
>>> a = [1, 2, 3,4] # list 1 >>> b = [5, 6, 7] # list 2 >>> a.extend(b)#gives one list >>> a [1, 2, 3, 4, 5, 6, 7] >>> a.append(b) # gives list of list >>> a [1, 2, 3, 4, [5, 6, 7]]
4。言語構成
手続き型コードはPythonでサポートされていますが、関数内でコードを記述することをお勧めします。
def main(): for i in range(2**3): print(x) main()
よりもはるかに優れています
for x in range(2**3): print(x)
基盤となるCpython実装があるため、グローバル変数よりもローカル変数を格納する方が高速です。
5。標準ライブラリを使用する:
可能な限り、組み込み関数と標準ライブラリパッケージを使用することをお勧めします。そこで、-
の代わりにnewlist = [] for x in somelist: newlist.append(myfunc(x))
これを使用してください-
newlist = map(myfunc, somelist)
同様に、itertools(標準ライブラリ)を使用してみてください。一般的なタスクの方がはるかに高速です。たとえば、数行のコードでループの順列のようなものを作成できます。
>>> import itertools >>> iter = itertools.permutations(["a","b","c"]) >>> list(iter) [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
6。ジェネレーター
ジェネレータは、メモリフットプリントと、作成したコードの平均時間計算量の両方を削減するための優れた構造です。
def fib(): a, b = 0, 1 while 1: yield a a, b = b, a+b
-
WindowsでのPythonプログラミング用のIDE
この記事では、PythonforWindowsで利用できるさまざまなIDEについて学習します。 Pycharm インタラクティブなPythonコンソール Webフレームワークのサポート より速い屈折時間 開発が少ない Jupyterノートブック ほぼすべてのPythonモジュールとの互換性 スペースとハードウェアの要件が少ない 組み込みのターミナルおよびカーネル機能 さまざまなウィジェットを適用できます ウィングイデ 組み込みのデバッグツール 単体テストのサポート 簡単なコードナビゲーション機能。 コモドイデ サードパーティライブラリのサポート XMLオートコンプ
-
Pythonが競技コーディングに最適なのはなぜですか
競技プログラミングは一般に、適切なデータ構造を使用して効率的なアルゴリズムを利用するためのコーディングと呼ばれます。彼らは多くのレベルでプログラマーのスキルをテストします。 アルゴリズムとデータ構造の助けを借りて、さまざまなロジックを適用することによって、あなたに提起された架空のプログラミング問題を解決する必要があります。問題を解決するだけでなく、時間とスペースが非常に複雑な非常に効率的な解決策を考え出す必要があります。 いわゆる競技プログラミングの問題ステートメントの例は次のようになります- 小文字のラテン文字のみで構成される長さnの文字列sが与えられます。 文字列のサブ文字列は、そ