ホームページ  >  記事  >  バックエンド開発  >  Python の効率的なプログラミングに関する 18 のヒントを共有する

Python の効率的なプログラミングに関する 18 のヒントを共有する

WBOY
WBOY転載
2023-04-16 15:25:031033ブラウズ

Python の効率的なプログラミングに関する 18 のヒントを共有する

この記事は Python Programming Time によって編集されました

大学で 4 年間 c または c を勉強した人は、Python 言語の効率的なプログラミング スキルに非常に興奮します。 . それはうまくいきませんでしたが、ついに自由になりました。高級言語でこれができないのなら、なぜこれほど高度な言語なのでしょうか?

01 変数の交換

>>>a=3
>>>b=6

この場合、c で変数を交換したい場合は、必ず空の変数が必要です。しかし、Python にはそれは必要ありません。必要なのは 1 行だけです。誰もが明確に見ることができます。

>>>a,b=b,a
>>>print(a)
>>>6
>>>ptint(b)
>>>5

02 辞書内包表記と集合内包表記

ほとんどの Python プログラマーは、リスト内包表記を知っており、使用しています。リスト内包表記の概念に慣れていない場合は、リスト内包表記を使用すると、リストを作成するためのより短く、より簡潔な方法が得られます。

>>> some_list = [1, 2, 3, 4, 5]
>>> another_list = [ x + 1 for x in some_list ]
>>> another_list
[2, 3, 4, 5, 6]

Python 3.1 以降、同じ構文を使用してセットと辞書リストを作成できます:

>>> # Set Comprehensions
>>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]
>>> even_set = { x for x in some_list if x % 2 == 0 }
>>> even_set
set([8, 2, 4])
>>> # Dict Comprehensions
>>> d = { x: x % 2 == 0 for x in range(1, 11) }
>>> d
{1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}

最初の例では、some_list をベースとして使用し、異なる A コレクションを持つリストを作成します。偶数のみを含む繰り返し要素の数。ディクショナリ テーブルの例では、1 ~ 10 の非繰り返し整数のキーを作成し、値はキーが偶数かどうかを示すブール型です。

ここでもう 1 つ注目すべき点は、セットのリテラル表現です。組み込み関数 set() を使用せずに、

>>> my_set = {1, 2, 1, 2, 3, 4}
>>> my_set
set([1, 2, 3, 4])

という方法でコレクションを簡単に作成できます。

03 数を数えるときにカウンターを使用してオブジェクトを数える

これは当たり前のように聞こえますが、忘れられがちです。何かを数えるのはほとんどのプログラマーにとって一般的なタスクであり、ほとんどの場合、それほど難しいことではありません。これを簡単にする方法をいくつか紹介します。

Python のコレクション クラス ライブラリには、次のようなことを行うために特別に設計された dict クラスの組み込みサブクラスがあります。

>>> from collections import Counter
>>> c = Counter('hello world')
>>> c
Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})
>>> c.most_common(2)
[('l', 3), ('o', 2)]

04 JSON を美しく出力します

JSON はデータのシリアル化の非常に優れた形式であり、現在さまざまな API や Web サービスで広く使用されています。 Python の組み込み json 処理を使用すると、JSON 文字列をある程度読みやすくすることができますが、大きなデータに遭遇すると、長く連続した線として表示され、人間の目には見えにくくなります。

JSON データをより使いやすくするために、indent パラメーターを使用して美しい JSON を出力できます。これは、コンソールで対話的にプログラミングまたはログを記録する場合に特に便利です。

>>> import json
>>> print(json.dumps(data))# No indention
{"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]}
>>> print(json.dumps(data, indent=2))# With indention
{
"status": "OK",
"count": 2,
"results": [
{
"age": 27,
"name": "Oz",
"lactose_intolerant": true
},
{
"age": 29,
"name": "Joe",
"lactose_intolerant": false
}
]
}

同様に、組み込みの pprint モジュールを使用すると、他のものをより美しく印刷できます。

05 FizzBu​​zz を解く

少し前に Jeff Atwood が FizzBu​​zz と呼ばれる簡単なプログラミング演習を宣伝しました。質問は次のように引用されています:

1 から 1 までの数字を出力するプログラムを作成してください100, 3 数値を置き換える場合は「Fizz」、5 の倍数の場合は「Buzz」、3 と 5 の倍数の場合は「FizzBu​​zz」を出力します。

これは、この問題を解決するための短くて興味深い方法です:

for x in range(1,101):
print"fizz"[x%3*len('fizz')::]+"buzz"[x%5*len('buzz')::] or x

06 if 行のステートメント

print "Hello" if True else "World"
>>> Hello

07 Connect

これの下の最後のものこのメソッドは、タイプの異なる 2 つのオブジェクトをバインドする場合に非常に優れています。

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> ['Packers', '49ers', 'Ravens', 'Patriots']
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1

08 数値比較

これは多くの言語で見てきた非常に優れたシンプルな方法です

x = 2
if 3 > x > 1:
 print x
>>> 2
if 1 < x > 0:
 print x
>>> 2

09 2つのリストを同時に反復処理します

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
 print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

10 インデックス付きリストの反復

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

11 リストの内包表記

リストが与えられた場合、偶数リスト法を排除できます:

numbers = [1,2,3,4,5,6]
even = []
for number in numbers:
if number%2 == 0:
even.append(number)

は次のように変換されます:

numbers = [1,2,3,4,5,6]
even = [number for number in numbers if number%2 == 0]

12 辞書内包表記

リスト内包表記と同様に、辞書でも同じ仕事ができます:

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print {key: value for value, key in enumerate(teams)}
>>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

13 リストの値を初期化します

items = [0]*3
print items
>>> [0,0,0]

14リストを文字列に変換します

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

15 辞書から要素を取得します

try/Except コードが洗練されていないことは認めますが、ここでは簡単な方法を示します。辞書でキーを見つけてみます。見つからない場合は、2 番目のパラメーターを使用して、対応する値がその変数値に設定されます。

data = {'user': 1, 'name': 'Max', 'three': 4}
try:
 is_admin = data['admin']
except KeyError:
 is_admin = False

これに置き換えます

data = {'user': 1, 'name': 'Max', 'three': 4}
is_admin = data.get('admin', False)

16 リストのサブセットを取得します

リスト内の一部の要素のみが必要な場合もあります。ここでは、リストのサブセットを取得するいくつかのメソッドを示します。リスト。

x = [1,2,3,4,5,6]
#前3个
print x[:3]
>>> [1,2,3]
#中间4个
print x[1:5]
>>> [2,3,4,5]
#最后3个
print x[3:]
>>> [4,5,6]
#奇数项
print x[::2]
>>> [1,3,5]
#偶数项
print x[1::2]
>>> [2,4,6]

Python の組み込みデータ型に加えて、コレクション モジュールにはいくつかの特別な使用例も含まれています。カウンターは状況によっては非常に実用的です。今年の Facebook HackerCup に参加した人なら、その実用性さえ理解できるでしょう。

from collections import Counter
print Counter("hello")
>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})

17 反復ツール

コレクション ライブラリと同様に、特定の問題を効率的に解決できる itertools と呼ばれるライブラリもあります。使用例の 1 つは、すべての組み合わせを見つけることです。これにより、グループ内の要素のありえない組み合わせをすべて知ることができます。

from itertools import combinations
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for game in combinations(teams, 2):
print game
>>> ('Packers', '49ers')
>>> ('Packers', 'Ravens')
>>> ('Packers', 'Patriots')
>>> ('49ers', 'Ravens')
>>> ('49ers', 'Patriots')
>>> ('Ravens', 'Patriots')

18 False == True

これは、非常に興味深いものよりも実用的なテクニックです。 、Python では、True と False はグローバル変数なので、次のようになります。

以上がPython の効率的なプログラミングに関する 18 のヒントを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。