Pythonで絶対に犯してはいけない10の失敗
10 Python Failures You Should Never Make
Pythonを学び始めると、しばしば悪い習慣に出会います。この記事では、Python開発者のレベルを上げるためのベストプラクティスを学びます。
Pythonを学び始めたばかりの頃、あらかじめ知っていたら学習カーブを加速させることができた多くの間違いを com しました。
1- 一行で変数を定義しないでください。
a = 12b = 56c = 128
通常、1行に1つの変数を定義しますが、1行のコードで複数の変数を定義する方法があります。
a,b,c = 12,56,128
このようにして、複数の変数を定義することができます。これにより、コードがより読みやすくなります。
2- モジュールをインポートするときは*を使用してください。
from numpy import *numbers = arange(1,10,step = 10)print(mean(numbers))
通常、*を使用して対応するライブラリのモジュールを呼び出します。ただし、特定のライブラリ関数に興味がある場合は、すべてのモジュールを呼び出すことは意味がありません。
import numpy as npnumbers = np.arange(1,10,step = 10)print(np.mean(numbers))
関心のあるライブラリ(この場合はnumpy)をインポートし、それにエイリアスを割り当てた後、使用するメソッドを呼び出すことができます。
from numpy import arange,meannumbers = arange(1,10,step = 10)print(mean(numbers))
また、関心のあるライブラリの関数を直接イノベーションすることもできます。どちらの方法でも問題ありません。
3- 文字列を連結するには「+」を使用してください。
name,year = "Amado",22print("My name is " + name + " and I am " + str(year) + " years old")
通常、文字列を連結するには+を使用しますが、理解しにくいという欠点があります。
name,year = "Amado",22print(f"My name is {name} and Im {year} years old")
変数を連結するためにフォーマット済み文字列リテラルを使用します。変数の性質に関係なく、変数を連結することができます。さらに、読みやすくなります。
4- ラムダ関数を使用しないでください。
def function(x): return x**2 print(function(12))
通常、関数を作成する場合、通常の関数を作成します。作成するメソッドがシンプルで、頻繁に使用する場合があります。
function = lambda x: x**2print(function(12))
同じ目的のためにラムダ関数を作成できますが、よりシンプルになります。関数を作成する場合、あまり複雑でない関数を作成したい場合は、通常のPython関数よりもラムダ関数を使用する方がずっと良いです。
5- 複数のコード行からIf Elseを使用する。
age = 22if age>=18: print('You are of age')else: print('You are not of age')
通常、学習するときは、if elseステートメントをこのように記述することに慣れていますが、1行のコードに簡略化することができます。
age = 22"You are of age" if age>=18 else "You are not of age"
このように、if-elseを1行のコードに簡略化することで、読みやすくなります。
6- 複数の条件付きIfステートメントの使用
kepler_third_law = lambda ua: (np.round(np.sqrt(ua**3),1))def calculate_years(planet): planet = planet.lower() if planet == "mercury": ua = 0.387 print(f'Number of planet years Mercury: {kepler_third_law(ua)}') if planet == "venus": ua = 0.723 print(f'Number of planet years Venus: {kepler_third_law(ua)}') if planet == "earth": ua = 1 print(f'Number of planet years Earth: {kepler_third_law(ua)}') if planet == "mars": ua = 1.524 print(f'Number of planet years Mars: {kepler_third_law(ua)}') if planet == "earth": ua = 1 print(f'Number of planet years Earth: {kepler_third_law(ua)}') if planet == "jupiter": ua = 5.208 print(f'Number of planet years Jupiter: {kepler_third_law(ua)}') if planet == "saturn": ua = 9.539 print(f'Number of planet years Saturn: {kepler_third_law(ua)}') if planet == "uranus": ua = 19.182 print(f'Number of planet years Uranus: {kepler_third_law(ua)}') if planet == "neptune": ua = 30.058 print(f'Number of planet years Neptune: {kepler_third_law(ua)}') if planet == "pluto": ua = 39.439 print(f'Number of planet years Pluto: {kepler_third_law(ua)}')
一般的には、提示された条件に応じて複数のifステートメントを使用します。これにより、コードの行数が過剰になるという欠点があります。
import numpy as npkepler_third_law = lambda ua: (np.round(np.sqrt(ua**3),1))def calculate_years(planet): planet = planet.lower() ua_dict = {'saturn':9.539, 'earth':1, 'mercury':0.387, 'venus':0.723, 'jupiter':5.203, 'uranus':19.182, 'pluto':39.439, 'mars':1.524} years = kepler_third_law(ua_dict[planet]) return f'Number of planet years {planet}: {years}'
複数のifステートメントを使用する代わりに、惑星のAUsを格納する辞書を作成し、後でKepplerの第3法則を適用して太陽を周回するのに必要な年数を計算します。この戦略を適用することで、コードをきれいにし、理解しやすくすることができます。
7- リスト内包表記は使用しないでください。
import numpy as npnumbers = np.arange(1,20+1,step = 1)par_numbers = []for number in numbers: if number %2==0: par_numbers.append(number)
通常、与えられた条件に従って要素をリストに格納する場合、forループを使用します。たとえば、この場合、偶数値のみを格納したい場合があります。
import numpy as npnumbers = np.arange(1,20+1,step = 1)[n for n in numbers if n % 2 == 0]
リスト内包表記を使用すると、コードの行数を大幅に削減できます。
8- enumerateは使用しないでください。
names = ['Amado','John','Artemio']last_name = ['Vazquez','Jobs','Lara']for i in range(len(names)): print(f'{names[i]} {last_name[i]}')
人の名前と姓を画面に表示したい場合、range()関数を使用してインデックスを定義し、生成されたインデックスを基に後でそれを印刷します。
names = ['Amado','John','Artemio']last_name = ['Vazquez','Jobs','Lara']for i,name in enumerate(names): print(f'{name} {last_name[i]}')
enumerate関数を使用すると、リストのオブジェクトインデックスを返すため、このステップを保存できます。
9- zipを使用しないでください
manufacturer = ['Infiniti','Mazda','Nissan','BMW']model = ['Q50','Mazda 6','Altima','3 Series']engine = [3.0,2.5,2.0,2.0]for i in range(len(manufacturer)): print(f'{manufacturer[i]} {model[i]} {engine[i]}')
ここで、前のものと似たような間違いをしていますが、ここでは3つのリストを調和して出力したいと思っています。
manufacturers = ['Infiniti','Mazda','Nissan','BMW']models = ['Q50','Mazda 6','Altima','3 Series']engines = [3.0,2.5,2.0,2.0]for (manufacturer,model,engine) in zip(manufacturers,models,engines): print(f'{manufacturer} {model} {engine}')
zipメソッドを使用すると、複数のリストを同時に使用できるため、インデックスを使用するよりもはるかに快適で、理解するのもはるかに簡単です。
10- Keys()/Items()
consoles_dict = {'PS5':499, 'PS5 Digital':399, 'Xbox Series S':299, 'Xbox Series X':499}consoles_dict.keys() #'PS5','PS5 Digital','Xbox Series S','Xbox Series X'consoles_dict.values() # 499,399,299,499consoles_dict.items()
時には、辞書を誤用することがあります。より具体的には、アクセスするためのメソッドを使用します。 keys()はキーにアクセスするために使用され、values()は各キーに割り当てられた値を抽出することを示します。最後に、items()は両方の要素を抽出することを許可します。
for key in consoles_dict: print(key)
辞書のキーにアクセスする場合は、関心のある辞書にサイクルを適用するだけで十分です。
for key in consoles_dict: print(consoles_dict[key])
辞書の値にアクセスしたい場合は、forループの上にキーの名前を割り当てるだけで十分です。
for key,value in consoles_dict.items(): print(key,value)
items()メソッドを使用して、2つの値を反復処理に追加することで、キーとその値の両方を取得できるようにする方が良いです。
11-モジュールに頼るな
sum_ = 0for number in range(1,10+1): sum_ += number print(sum_/10)
いくつかのライブラリは、例えば、数学計算を実行するために使用されるnumpyというライブラリがあるように、人生を楽にすることができます。いくつかのライブラリは、最初からプログラムする代わりに、人生を楽にすることができます。例えば、データサイエンスに非常に有名なライブラリがあり、複雑な計算を実行するために使用されます。
import numpy as npnumbers = np.arange(1,10+1,1)print(np.mean(numbers))
numpyライブラリは、シンプルな合計からフーリエ変換など、いくつかの数学的計算を行う際に私たちを大幅に支援します。
12- INを使用しないでください
car_model = "Maxima"if car_model == "Altima" or car_model == "Maxima" or car_model == "Q50" or car_model == "Q60": print('mMdel available')
長い条件文を使用する代わりに、IN条件をサポートできます。
car_models = ['Altima','Maxima','Q50','Q60']car_model = "Maxima"'Model avaliable' if car_model in car_models else 'Model not avaliable'
従来のPythonリストを作成し、IN演算子が選択した車がリスト内にあるかどうかを比較します。また、1行のコードのif-elseステートメントに依存しています。
興味があるかもしれません。
10 Pandas Mistakes You Should NEVER Make
この記事では、Pandasを学び始める初心者がよく犯す10の最も一般的なミスについてレビューします…
VoAGI.com
Streamlitを使用して美しいアプリを作成する
異なるユーザーがあなたのMLアルゴリズムをWeb上で使用できるように、あなたのMLプロジェクトを別のレベルに引き上げたい場合…
VoAGI.com
これらのトリックでアンダーフィットとオーバーフィットを除去する
アンダーフィットとオーバーフィットは、私たちが日常で直面する問題です。この記事では、最も強力な解決方法を学ぶことができます…
VoAGI.com
この小さな記事を読んでいただき、ありがとうございます。あなたがデータサイエンス、コンピューターセキュリティ、またはWeb開発を行うプロジェクトで学んで実践することを願っています。リポジトリには、GitHubでアクセスできます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles