ホームページ バックエンド開発 Python チュートリアル 必見のPython言語の30の特徴とスキル (2)

必見のPython言語の30の特徴とスキル (2)

Mar 17, 2017 pm 04:45 PM
python 言語

httpPython を学習し始めて以来、頻繁に使用する「トリック」のリストを維持することにしました。 「すごい、これはうまくいく!」と思った一節。 ” コード (例として、StackOverflow、オープンソース ソフトウェアなど) を理解するまで試してから、リストに追加します。経験豊富な方向けの記事です。 Python プログラマーの場合は、すでに知っているものもあれば、Python を学習している、または学習を始めたばかりの C、C++、または Java プログラマーであれば、まだ知らないことがあるかもしれません。それらの多くは私と同様に非常に便利です それぞれのトリックや言語の機能は、過度の説明なしで例を通してのみ確認できます。ただし、例の一部は、あなたの慣れによっては、まだ少し複雑に見えるかもしれません。例を見てよくわからない場合は、Google で詳細を確認するのに十分な情報がタイトルに表示されます

リストは、一般的に使用される言語の機能とテクニックが最初に並べられています

1.15 フラット リスト:

。 >>> a = [[1, 2], [3, 4], [5, 6]]

>>

list

(itertools.chain.from_iterable(a))

[1, 2, 3, 4, 5, 6]

>sum(a, [])

[1, 2, 3, 4, 5, 6]

> ;>> [x

l in a for x in l]

[1, 2, 3, 4, 5, 6] > = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

>>> ; [l1 の l1 の l2 の x 2 の x]

[ 1、2、3、4、5、6、7、8]

>>> a = [1, 2, [3, 4], [[5, 6], [7, 8] ]]]

>>> flatten = lambda x: [y for l in x for y in flatten(l)]

if

type(x) はリスト

else

[x]

>> ;> flatten(a) [1, 2, 3, 4, 5, 6, 7, 8] 注: Python ドキュメントによれば、 itertools.chain.from_iterable が推奨されます。式

>>> g = (x ** 2 for x in x

range

(10))

>>>

0 >> ;> 次(g) >>> 次(g)

>>> x in xrange(10)) 2025

>>> sum(x ** 3 for x in xrange(10) if x % 3 == 1) 408

1.17 反復辞書

> ;>> m = {x: x ** 2 for x in range(5)}

>>> m

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

>>> m = {x: 'A' + str (x) for x in range(10)}

>>> m

; A0'、1:'A1'、2:'A2'、3:'A3'、4:'A4'、5:'A5'、6:'A6'、7:'A7'、8:'A8' , 9: 'A9'}

1.18 辞書を反復して辞書を逆引きします

>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> m

{'d': 4, 'b': 2, 'c': 3}

>>> for k, v in m.items()}

{1: 'a', 2: 'b' , 3: 'c', 4: 'd'}

1.19 名前付きシーケンス (collections.namedtuple)

>>> Point = collections.namedtuple('Point', ['x', 'y'] )

>>> p = Point(x=1.0, y=2.0)

> >> p

Point(x=1.0, y=2.0)

>>> p.x

1.0

>>>, ['x ', 'y'])) :

... スロット = ()

... def add(self, other):

... return Point(x=self.x + other.x, y=self.y + other.y)

...

> ;>> p = ポイント(x=1.0, y=2.0)

>>> q = 点(x=2.0, y=3.0)

>>> p + q

Point(x=3.0, y=5.0)

1.21 集合および集合操作

>>> A = {1, 2, 3, 3}

>>> A

set([1, 2, 3])

>>> B = {3, 4, 5, 6, 7}

>>> B

set([3, 4, 5, 6, 7])

>>>あ | B

set([1, 2, 3, 4, 5, 6, 7])

>>> A & B

set([3])

>>> A - B

set([1, 2])

>>> B - A

set([4, 5, 6, 7])

>>> A ^ B

set([1, 2, 4, 5, 6, 7])

>>> (A ^ B) == ((A - B) | (B - A))

True

1.22 多重集合及びその操作 (collections.Counter)

>>> A = collections.Counter([1, 2, 2])

>>> B = collections.Counter([2, 2, 3])

>>> A

カウンター({2: 2, 1: 1})

>>> B

カウンター({2: 2, 3: 1})

>>>あ | B

カウンター({2: 2, 1: 1, 3: 1})

>>> A & B

カウンター({2: 2})

>>> A + B

カウンター({2: 4, 1: 1, 3: 1})

>>> A - B

カウンター({1:1})

>>> B - A

Counter({3: 1})

1.23 迭代中最常见的要素 (collections.Counter)

>>> A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7])

>>> A

カウンター({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})

>>> A.most_common(1)

[(3, 4)]

>>> A.most_common(3)

[(3, 4), (1, 2), (2, 2)]

1.24 双端队列 (collections.deque)

>>> Q = collections.deque()

>>> Q.app終了(1)

>>> Q.appendleft(2)

>>> Q.extend([3, 4])

>>> Q.extendleft([5, 6])

>>> Q

deque([6, 5, 2, 1, 3, 4])

>>> Q.pop()

4

>>> Q.popleft()

6

>>> Q

deque([5, 2, 1, 3])

>>> Q.回転(3)

>>> Q

deque([2, 1, 3, 5])

>>> Q.回転(-3)

>>> Q

deque([5, 2, 1, 3])

1.25 有最大長度の双端队列 (collections.deque)

>>> last_three = collections.deque(maxlen=3)

>>> for i in xrange(10):

... last_three.append(i)

... print ', '.join(str(x) for x in last_three)

...

0

0, 1

0, 1, 2

1, 2, 3

2, 3, 4

3, 4, 5

4, 5, 6

5, 6, 7

6 , 7, 8

7, 8, 9

1.26 字典排序 (collections.OrderedDict)

>>> m = dict((str(x), x) for x in range(10))

>>> print ', '.join(m.keys())

1, 0, 3, 2, 5, 4, 7, 6, 9, 8

>>> m = collections.OrderedDict((str(x), x) for x in range(10))

>>> print ', '.join(m.keys())

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

>>> m = collections.OrderedDict((str(x), x) for x in range(10, 0, -1))

>>> print ', '.join(m.keys())

10, 9, 8, 7, 6, 5, 4, 3, 2, 1

1.27 缺字省典 (collections.defaultdict)

>> ;> m = dict()

>>> m['a']

トレースバック (最新の call 最後):

File ""、1 行目、<module> 内  

KeyError: 'a'

>>>  

>>> m = collections.defaultdict(int)

>>> m['a']

0

>>> m['b']

0

>>> m = collections.defaultdict(str)

>>> m['a']

''

>>> m['b'] += 'a'

>>> m['b']

'a'

>>> m = collections.defaultdict(lambda: '[デフォルト値]')

>>> m['a']

'[デフォルト値]'

>>> m['b']

'[デフォルト値]'

1.28 用缺省字典表示简单的树

>>> json

>>> をインポートします。 Tree = lambda: collections.defaultdict(tree)

>>> root =tree()

>>> root['menu']['id'] = 'file'

>>> root['メニュー']['値'] = 'ファイル'

>>> root['menu']['menuitems']['new']['value'] = 'New'

>>> root['menu']['menuitems']['new']['onclick'] = 'new();' 

>>> root['menu']['menuitems']['open']['value'] = '開く'

>>> root['menu']['menuitems']['open']['onclick'] = 'open();' 

>>> root['menu']['menuitems']['close']['value'] = '閉じる'

>>> root['menu']['menuitems']['close']['onclick'] = 'close();' 

>>> print json.dumps(root, sort_keys=True, indent=4, separators=(',', ': '))

{

"menu": {

"id": "file",

"menuitems": {

"close": {

"onclick": "close();",

"value": "閉じる"

},

"新規": {

" onclick": "new();",

"value": "New"

},

"open": {

"onclick": open();",

"値": " 「

}

}、

"value": "File"

}

(https://gist.github.com/hrldcpr/201 2250查看详情)

1.29 映射对象到達唯一の配列数 (collections.defaultdict)

>>> itertools、コレクションをインポート

>>> value_to_numeric_map = collections.defaultdict(itertools.count().next)

>>> value_to_numeric_map['a']

0

>>> value_to_numeric_map['b']

1

>>> value_to_numeric_map['c']

2

>>> value_to_numeric_map['a']

0

>>> value_to_numeric_map['b']

1


以上が必見のPython言語の30の特徴とスキル (2)の詳細内容です。詳細については、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)

ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Apr 01, 2025 pm 04:03 PM

Scapy Crawlerを使用する場合、パイプラインの永続的なストレージファイルを書くことができない理由は?ディスカッションデータクローラーにScapy Crawlerを使用することを学ぶとき、あなたはしばしば...

PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? Apr 01, 2025 pm 04:09 PM

Python Process Poolは、クライアントが立ち往生する原因となる同時TCP要求を処理します。ネットワークプログラミングにPythonを使用する場合、同時のTCP要求を効率的に処理することが重要です。 ...

Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Apr 01, 2025 pm 04:15 PM

python functools.partialオブジェクトのpython functools.partialを使用してPythonを使用する視聴方法を深く探索します。

Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Apr 01, 2025 pm 05:24 PM

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Apr 01, 2025 pm 06:27 PM

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...

GoogleとAWSはパブリックピピイメージソースを提供していますか? GoogleとAWSはパブリックピピイメージソースを提供していますか? Apr 01, 2025 pm 05:15 PM

多くの開発者はPypi(PythonPackageIndex)に依存しています...

See all articles