ホームページ バックエンド開発 Python チュートリアル Python開発時に注意すべき10のこと

Python開発時に注意すべき10のこと

Apr 29, 2017 pm 05:05 PM

ここでは、Python に関する 10 の役立つヒントとテクニックを紹介します。これらのいくつかは、初心者が言語を学習する際に犯しやすい間違いです。

注: 私たちは皆 Python 3 を使用していると仮定します

1. リスト内包表記

リストがあります: バッグ = [1, 2, 3, 4, 5]

ここで、すべての要素を次のように 2 倍にします: [2, 4, 6, 8, 10]

ほとんどの初心者は、おそらくこれまでの言語経験に基づいてこれを行うでしょう

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    bag[i] = bag[i] * 2
ログイン後にコピー

しかし、もっと良い方法があります:

bag = [elem * 2 for elem in bag]
ログイン後にコピー

とてもシンプルですよね?これは Python リスト内包表記と呼ばれます。

Trey Hunner のチュートリアルをクリックして、リスト内包表記の詳細を参照してください。

2. リストをざっと確認します

上のリストを続けてください。

可能であればこれを避けてください:

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    print(bag[i])
ログイン後にコピー

代わりに、次のようにする必要があります:

bag = [1, 2, 3, 4, 5]  
for i in bag:  
    print(i)
ログイン後にコピー

x がリストの場合、その要素を反復処理できます。ほとんどの場合、各要素のインデックスは必要ありませんが、必要な場合は enumerate 関数を使用します。以下のようになります:

bag = [1, 2, 3, 4, 5]  
for index, element in enumerate(bag):  
    print(index, element)
ログイン後にコピー

非常に直感的で明確です。

3.エレメント交換

Java または C 言語から Python に切り替える場合は、次のことに慣れているかもしれません:

a = 5  
b = 10

# 交换 a 和 b
tmp = a  
a = b  
b = tmp
ログイン後にコピー

しかし、Python はより自然で優れた方法を提供します。

りー

十分ですよね?

4. 初期化リスト

10 個の整数 0 のリストが必要な場合は、まず次のことを考えます:

a = 5  
b = 10  
# 交换a 和 b
a, b = b, a
ログイン後にコピー

別の方法を試してみましょう:

bag = []  
for _ in range(10):  
    bag.append(0)
ログイン後にコピー

ほら、なんてエレガントなんだろう。

注: リストにリストが含まれている場合、これを実行すると浅いコピーが生成されます。

例:

bag = [0] * 10
ログイン後にコピー

おっとっと!すべてのリストが変更されますが、最初のリストのみを変更したいと考えています。

変更します:

bag_of_bags = [[0]] * 5 # [[0], [0], [0], [0], [0]]  
bag_of_bags[0][0] = 1 # [[1], [1], [1], [1], [1]]
ログイン後にコピー

また覚えておいてください:

「時期尚早な最適化が諸悪の根源」
リストの初期化が必要かどうか自問してください。

5. 文字列を構築します

多くの場合、文字列を出力する必要があります。変数が多い場合は、次のことは避けてください:

bag_of_bags = [[0] for _ in range(5)]  
# [[0], [0], [0], [0], [0]]

bag_of_bags[0][0] = 1  
# [[1], [0], [0], [0], [0]]
ログイン後にコピー

うーん、これはどのくらい乱雑に見えますか?代わりに、優れた簡潔なメソッド .format を使用できます。

これを実行します:

rree

ずっといい!

6. タプルを返す

Python では関数内で複数の要素を返すことができるため、作業が簡単になります。ただし、タプルを解凍するときに、一般的なエラーが発生します:

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is " + name + "and I'm " + str(age) + " years old. I was born in " + born_in + "."  
print(string)
ログイン後にコピー

これは必須ではありません。次のように変更できます:

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is {0} and I'm {1} years old. I was born in {2}.".format(name, age, born_in) 
print(string)
ログイン後にコピー

すべての要素を返す必要がある場合は、アンダースコア_を使用してください:

def binary():  
    return 0, 1

result = binary()  
zero = result[0]  
one = result[1]
ログイン後にコピー

とても効率的です!

7. 辞書にアクセスする

また、キーとペア (キー、値) を辞書に書き込むこともよくあります。

dict に存在しないキーにアクセスしようとすると、KeyError を回避するために次のようにしたくなるかもしれません:

def binary():  
    return 0, 1

zero, one = binary()
ログイン後にコピー

ただし、get() を使用する方が良い方法です。

りー

もちろん、代わりに setdefault を使用することもできます。

これはより簡単ですが、より高価な方法です:

zero, _ = binary()
ログイン後にコピー

dict 導出も使用できます。

りー

これら 2 つのメソッドは、count が呼び出されるたびにリストを走査するため、コストがかかります。

8 図書館を利用する

既存のライブラリをインポートするだけで、本当にやりたいことが実現します。

前の例について引き続き話しますが、リスト内に数値が出現する回数をカウントする関数を構築しましょう。まあ、そのようなことができるライブラリはすでにあります。

りー

ライブラリを使用する理由:

  • コードは正しく、テスト済みです。


  • アルゴリズムが最適化されているため、より高速に実行できる可能性があります。


  • 抽象化: 明確で十分に文書化されているため、まだ実装されていないことに集中できます。


  • 最後に、すべてが揃ったので、車輪を再発明する必要はありません。

9. リストをスライス/ステップ実行します

この list[start:stop:step] のように、開始点と終了点を指定できます。リストの最初の 5 つの要素を取り出します:

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    if i in countr:
        countr[i] += 1
    else:
        countr[i] = 1

for i in range(10):  
    if i in countr:
        print("Count of {}: {}".format(i, countr[i]))
    else:
        print("Count of {}: {}".format(i, 0))
ログイン後にコピー

これはスライスです。停止点を 5 に指定すると、停止する前にリストから 5 つの要素が取り出されます。

最後の 5 つの要素をどうするか?

りー

分かりませんか? -5 は、リストの末尾から 5 つの要素を取得することを意味します。

リスト内の要素間の間隔を操作したい場合は、次のようにします:

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    countr[i] = countr.get(i, 0) + 1

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))
ログイン後にコピー

しかし、次のようにする必要があります:

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
countr = dict([(num, bag.count(num)) for num in bag])

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))
ログイン後にコピー

これはリスト内のステップです。 list[::2] は、リストを走査し、2 つのステップで要素を取り出すことを意味します。

list[::-1] を使用すると、クールな反転リストを実行できます。

10. Tab キーまたはスペースバー

長期的には、タブとスペースを混在させると大惨事が発生する可能性があり、IndentationError: 予期しないインデントが表示されることになります。 Tab キーを選択するかスペース バーを選択するかに関係なく、ファイルとプロジェクト全体でそれを使用し続ける必要があります。

タブの代わりにスペースを使用する理由の 1 つは、タブがすべてのエディタで同じように作成されるわけではないことです。使用するエディタによっては、タブが 2 ~ 8 個のスペースとして扱われる場合があります。

コードを記述するときにスペースを使用してタブを定義することもできます。このようにして、タブとして使用するスペースの数を選択できます。ほとんどの Python ユーザーは 4 つのスペースを使用します。

英語原文: The Python Way: 10 Tips

以上がPython開発時に注意すべき10のことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ 開発ノート: C++ コードでの Null ポインター例外の回避 C++ 開発ノート: C++ コードでの Null ポインター例外の回避 Nov 22, 2023 pm 02:38 PM

C++ 開発では、null ポインター例外は一般的なエラーであり、ポインターが初期化されていないか、解放された後も使用され続けている場合によく発生します。 Null ポインター例外はプログラムのクラッシュを引き起こすだけでなく、セキュリティ上の脆弱性も引き起こす可能性があるため、特別な注意が必要です。この記事では、C++ コードでの null ポインター例外を回避する方法について説明します。ポインター変数の初期化 C++ のポインターは、使用する前に初期化する必要があります。初期化されていない場合、ポインタはランダムなメモリ アドレスを指すことになり、Null Pointer Exception が発生する可能性があります。ポインタを初期化するには、ポインタを

明朝試験で注意すべき事項の紹介 明朝試験で注意すべき事項の紹介 Mar 13, 2024 pm 08:13 PM

Mingchao テスト中は、情報の損失やゲームへの異常なログインを防ぐために、システムのアップグレード、工場出荷時設定へのリセット、部品の交換は避けてください。特別な注意事項: テスト期間中は異議申し立てチャンネルがありませんので、取り扱いには注意してください。 Mingchao テスト中に注意が必要な事項の紹介: システムのアップグレード、工場出荷時の設定の復元、機器のコンポーネントの交換などは行わないでください。注: 1. 情報の損失を避けるため、テスト期間中は慎重にシステムをアップグレードしてください。 2. システムをアップデートすると、ゲームにログインできなくなる問題が発生する可能性があります。 3. 現段階ではまだアピールチャンネルは開設されていないため、アップグレードするかどうかはプレイヤー自身の判断で選択してください。 4.同時に、1つのゲームアカウントは1台のAndroidデバイスと1台のPCでのみ使用できます。 5. 携帯電話システムをアップグレードしたり、工場出荷時の設定に戻したり、デバイスを交換したりする前に、テストが完了するまで待つことをお勧めします。

初めてDouyinでライブブロードキャストを開始するにはどうすればよいですか?初めてライブ配信をする際に気をつけることは何ですか? 初めてDouyinでライブブロードキャストを開始するにはどうすればよいですか?初めてライブ配信をする際に気をつけることは何ですか? Mar 22, 2024 pm 04:10 PM

ショートビデオプラットフォームの台頭により、Douyinは多くの人々の日常生活に欠かせないものになりました。 Douyin でのライブ配信やファンとの交流は、多くのユーザーの夢です。では、Douyin で初めてライブブロードキャストを開始するにはどうすればよいでしょうか? 1.Douyinで初めてライブブロードキャストを開始するにはどうすればよいですか? 1. 準備 ライブブロードキャストを開始するには、まずDouyinアカウントが実名認証を完了していることを確認する必要があります。実名認証のチュートリアルは、Douyin APP の「自分」 -> 「設定」 -> 「アカウントとセキュリティ」にあります。実名認証が完了すると、ライブ配信条件を満たしてDouyinプラットフォームでライブ配信を開始できます。 2. ライブ配信許可を申請する ライブ配信条件を満たした後、ライブ配信許可を申請する必要があります。 Douyin APPを開き、「自分」→「クリエイターセンター」→「ダイレクト」をクリックします。

localstorage を使用してデータを保存する手順と注意事項 localstorage を使用してデータを保存する手順と注意事項 Jan 11, 2024 pm 04:51 PM

localStorage を使用してデータを保存する手順と注意事項 この記事では、主に localStorage を使用してデータを保存する方法と、関連するコード例を紹介します。 LocalStorage は、サーバーを経由せずにデータをユーザーのコンピューターのローカルに保持する、ブラウザーにデータを保存する方法です。 localStorage を使用してデータを保存する手順と注意事項は次のとおりです。ステップ 1: ブラウザが LocalStorage をサポートしているかどうかを確認する

ネットワークなしで pip をインストールする手順と注意事項 ネットワークなしで pip をインストールする手順と注意事項 Jan 18, 2024 am 10:02 AM

オフライン環境に pip をインストールする方法と注意点. ネットワークがスムーズでないオフライン環境では、pip のインストールが困難になります。この記事では、オフライン環境に pip をインストールするいくつかの方法を紹介し、具体的なコード例を示します。方法 1: オフライン インストール パッケージを使用する インターネットに接続できる環境で、次のコマンドを使用して、公式ソースから pip インストール パッケージをダウンロードします: pipdownloadpip このコマンドは、公式ソースから pip とその依存パッケージを自動的にダウンロードし、現在のディレクトリに保存します。ダウンロードした圧縮パッケージをリモートの場所に移動します

Python 開発経験の共有: バージョン管理とリリース管理を実行する方法 Python 開発経験の共有: バージョン管理とリリース管理を実行する方法 Nov 23, 2023 am 08:36 AM

Python 開発経験の共有: バージョン管理とリリース管理を実行する方法 はじめに: Python 開発プロセスにおいて、バージョン管理とリリース管理は非常に重要なリンクです。バージョン管理を通じて、コードの変更を簡単に追跡し、開発で共同作業し、競合を解決することができます。また、リリース管理は、コードの展開、テスト、リリースのプロセスを整理して、コードの品質と安定性を確保するのに役立ちます。この記事では、バージョン管理とリリース管理の 2 つの側面から Python 開発の経験と実践を共有します。 1. バージョン管理 バージョン管理

Python 開発ノート: 一般的なメモリ リークの問題を回避する Python 開発ノート: 一般的なメモリ リークの問題を回避する Nov 22, 2023 pm 01:43 PM

高級プログラミング言語である Python は、学習しやすく、使いやすく、開発効率が高いという利点があり、開発者の間でますます人気が高まっています。ただし、ガベージ コレクション メカニズムの実装方法が原因で、Python は大量のメモリを処理するときにメモリ リークが発生する傾向があります。この記事では、よくあるメモリリーク問題、問題の原因、メモリリークを回避する方法の3つの側面からPython開発時に注意すべきことを紹介します。 1. 一般的なメモリ リークの問題: メモリ リークとは、動作中にプログラムによって割り当てられたメモリ空間を解放できないことを指します。

Python 開発のアドバイス: オブジェクト指向プログラミングの原則を習得して適用する Python 開発のアドバイス: オブジェクト指向プログラミングの原則を習得して適用する Nov 22, 2023 pm 07:59 PM

Python は、さまざまな分野のソフトウェア開発で広く使用されている強力で柔軟なプログラミング言語です。 Python 開発プロセスでは、オブジェクト指向プログラミング (OOP) の原則を習得して適用することが非常に重要です。この記事では、開発者がオブジェクト指向プログラミングの原則をよりよく理解して適用できるように、Python 開発に関する重要な提案をいくつか紹介します。まず、オブジェクト指向プログラミングの中心的な考え方は、問題を一連のオブジェクトに分割し、

See all articles