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")

変数を連結するためにフォーマット済み文字列リテラルを使用します。変数の性質に関係なく、変数を連結することができます。さらに、読みやすくなります。

Chatathon by Chatbot Conference

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でアクセスできます

Get Certified in ChatGPT + Conversational UX + Dialogflow

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

OpenAIのCEOであるSam Altman氏:AIの力が証明されるにつれて、仕事に関するリスクが生じる

OpenAIのCEOであるSam Altmanは、特に彼の作品であるChatGPTに関するAIの潜在的な危険性について公言してきました。最近のイ...

人工知能

「ジャスティン・マクギル、Content at Scaleの創設者兼CEO - インタビューシリーズ」

ジャスティンは2008年以来、起業家、イノベーター、マーケターとして活動しています彼は15年以上にわたりSEOマーケティングを...

機械学習

3つの質問:大規模言語モデルについて、Jacob Andreasに聞く

CSAILの科学者は、最新の機械学習モデルを通じた自然言語処理の研究と、言語が他の種類の人工知能をどのように高めるかの調査...

人工知能

「アナコンダのCEO兼共同創業者、ピーターウォングによるインタビューシリーズ」

ピーター・ワンはAnacondaのCEO兼共同創設者ですAnaconda(以前はContinuum Analyticsとして知られる)を設立する前は、ピー...

人工知能

「クリス・サレンス氏、CentralReachのCEO - インタビューシリーズ」

クリス・サレンズはCentralReachの最高経営責任者であり、同社を率いて、自閉症や関連する障害を持つ人々のために優れたクラ...

人工知能

「ジンディのCEO兼共同創設者、セリーナ・リー― インタビューシリーズ」

「Celina Leeは、ZindiのCEO兼共同創設者であり、アフリカのデータサイエンティスト向けの最大の専門ネットワークです Celina...