2つの高度な機能

1.式のトリプレット

"""
条件成立时的返回值 if 条件 else 条件不成立时的返回值
"""
x = 10
y = 20 
print(x if x>y else y)  # 20

2.リスト内包

a = [i for i in range(10)]
print(a)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

式の3辞書

式3.1辞書

d = {i:i**2 for i in range(5)}
print(d)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

3.2 ZIP()メソッド

ZIP()オブジェクト関数は、パラメータとして繰り返し、タプルにパックオブジェクトの対応する要素を使用し、これらのタプルのリストを返すことができます。

各イテレータ矛盾の要素の数、リストの最短の長さとは、アスタリスク演算子を使用して、同じオブジェクトを返す場合、タプルは、リストを抽出します。

異なるジップ3のPython 2とPythonで方法:メモリを低減するためにはPython 3.xの、ZIP()オブジェクトを返します。リストを表示するには、手動で()変換をリストする必要があります。

  • ジップ構文:
zip([iterable, ...])
  • 返却値

タプルのリストを返します。

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

4.ジェネレータ

4.1ビルダーとは何ですか

強力な、しかし多くの場合、不便を使用しながら、Pythonのイテレータ・プロセスを作成します。Builderは、反復を達成するための簡単な方法です。簡単に言えば、Pythonはファンクション・ジェネレータは、イテレータオブジェクトを返されることがあります。

4.2ジェネレータを作成する方法

一般に、機能を使用するyieldキーは、関数発生器関数に単純ジェネレータ、この時間を実現することができます。yieldそして、returnそれを除いて、同じ値を返すreturn復帰した後、機能の状態が終了し、yield現在の実行状態機能が保存されます、リターン機能が継続する状態に戻った前に開催されました

一般的な関数発生器の異なる機能は、以下の点が異なっています。

  • ジェネレータ関数は、1つ以上の収量を備え、
  • あなたはジェネレータ関数を呼び出すと、この関数はオブジェクトを返しますが、すぐにダウン実行されません。
  • )(__iterの__()と__nextの__のように()メソッドは自動的に行われますので、我々は次のオブジェクトのメソッドを反復処理することができます
  • 関数は利回り、一時停止機能があると、制御は呼び出し元に返さ
  • ローカル変数とそのステータスは、次の時間通話終了機能するまで保存されます、StopIteraionは自動的に投げ出されます

4.3式ビルダー

Pythonのようなメソッドのリストを生成します:

# 产生1,2,3,4,5的一个列表
[x for x in range(5)]

あなたが交換した場合は[]交換し()、それは、式ビルダーになります。

(x for x in range(5))

なぜビルダー4.4

  1. より簡単に、少量のコードを使用します
  2. より効率的なメモリ使用量。レコードのように、必要なときにだけ発生装置にのみ使用されている間例えば、リストは、すべてのメモリ空間の確立に割り当てられています。
  3. それは無限のストリームを表します。私たちが読んで、メモリよりもはるかに多くのコンテンツを利用したいが、プロセス内のすべてのストリームの内容を必要とする場合には、発電機があるのでそれができる、良い選択は、例えば、発電機は、現在の処理状態を返すことができますです保存状態は、そう次回は直接扱うことができます。

5.匿名関数

5.1有名な機能

私たち与えられた関数の前に関数名の使用に基づいている、よく知られている機能です。

5.2匿名関数

匿名関数は、彼はすなわち、バインディング名前がありません、一度回復し、いずれかの実行を括弧。

  • ただ、ラムダ式、関数本体はDEFよりもはるかに簡単です。
  • ラムダ式は、代わりにコードブロックの本体です。私たちは、ラムダ式に限定されたロジックをパッケージ化することができます。
  • ラムダ関数は、独自の名前空間を持ち、独自の引数リストやグローバル名前空間のパラメータの外にアクセスすることはできません。
  • ラムダ関数のルックスは、単一の行を書きますが、動作効率を高めるために小さな関数を呼び出すときに、スタックメモリを占有しないことを目指しCまたはC ++インライン関数に相当することはできませんが。
  • 文法
lambda [arg1 [,arg2,.....argn]]:expression

5.3なぜ匿名関数を使うのか?

  1. プログラムのタイムラインでの使用なので、関数名を定義しますが、プログラムをより簡潔たい場合は、メモリ空間に定義された変数に2を保存する必要はありません。
  2. あなたは、プログラムがより簡潔になりたい場合は
  • 組み合わせにおける一般匿名関数MAX()、ソート()、フィルタ()、ソート()メソッド。

おすすめ

転載: www.cnblogs.com/zj420255586/p/11348867.html