Pythonの分解とパッケージ化

Pythonの分解とパッケージ化#

質問する##

最初に次のコードを見てください

x =1
y =2

tmp = x
x = y
y = tmp

print(x, y)

コードの出力は次のとおりです。21

次のコードを見てください。

x =1
y =2

x, y = y, x
print(x, y)

コードの出力は次のとおりです。21

x、y = y、xこのコードの背後にある意味は分解とカプセル化です

Pythonパッケージ##

In [1]: t =1,2

In [2]: t
Out[2]:(1,2)

In [3]:type(t)
Out[3]: tuple			#タプルを定義するときは、括弧を省略できます。

In [4]: t1 =(1,2)

In [5]: t2 =1,2
						#t1とt2は同等です
In [6]: t1
Out[6]:(1,2)

In [7]: t2
Out[7]:(1,2)

したがって、カプセル化の結果はタプルである必要があります。

x、y = y、xこのコードの右側は(y、x)としてカプセル化されます

Python Deconstruction

基本的な分解###

In [8]: lst =[1,2]

In [9]: first, second = lst

In [10]:print(first, second)12

要素の順序に従って、線形構造lstの要素を最初に変数に割り当てます。

deconstruct ###にアスタリスクを追加します

In [11]: lst =list(range(5))

In [12]: head,*tail = lst

In [13]: head
Out[13]:0

In [14]: tail
Out[14]:[1,2,3,4]

In [15]:*lst2 = lst	#左側にアスタリスクの付いた変数が必要です
 File "<ipython-input-15-98211a44ccfb>", line 1*lst2 = lst
               ^
SyntaxError: starred assignment target must be in a list or tuple

In [16]:*head, tail = lst

In [17]: head
Out[17]:[0,1,2,3]

In [18]: lst
Out[18]:[0,1,2,3,4]

In [19]: tail
Out[19]:4

In [20]: head,*m1,*m2, tail = lst		#複数のアスタリスクを含めることはできません。1つだけです。
 File "<ipython-input-20-1fc1a52caa8e>", line 1
 head,*m1,*m2, tail = lst
                              ^
SyntaxError: two starred expressions in assignment

In [21]: v1, v2, v3, v4, v5, v6, v7 = lst	#左側の変数の数は、右側の要素の数を超えることはできません
---------------------------------------------------------------------------
ValueError                                Traceback(most recent call last)<ipython-input-21-9366cfb498a1>in<module>()---->1 v1, v2, v3, v4, v5, v6, v7 = lst

ValueError: not enough values to unpack(expected 7, got 5)

In [22]: v1, v2 = lst						#左側の変数の数は、右側の要素の数より少なくすることはできません
---------------------------------------------------------------------------
ValueError                                Traceback(most recent call last)<ipython-input-22-d7b0a4e7871e>in<module>()---->1 v1, v2 = lst

ValueError: too many values to unpack(expected 2)

次のルールとして要約されます。

マルチレベルの分解###

解体は複数のレベルをサポートします

In [23]: lst =[1,(2,3),5]

In [24]: _, v,*_ = lst		#vはに解決します(2,3)

In [25]: v
Out[25]:(2,3)

In [26]: _, val = v			#vさらに分解することができます

In [27]: val
Out[27]:3

In [28]: _,(_, val),*_ = lst		#ワンステップで分解可能

In [29]: val
Out[29]:3

In [30]: _,[*_, val],*_ = lst		#中央部分をリストに分解します

In [31]: val
Out[31]:3

In [32]: _, _, val,*_ = lst		# (2,3)2番目に解決_

In [33]: val
Out[33]:5

Pythonアンダースコアの使用###

単一の下線_を使用することは、変数を破棄することを意味します。これはPythonの規則です。単一のアンダースコアもPythonの有効な識別子ですが、変数を破棄したくない場合は、通常、意味のある変数を示すために単一のアンダースコアを使用しません。それは慣習として理解することができます。

分解とカプセル化の使用###

非常に複雑なデータ構造、多層のネストされた線形構造。分解を使用して値をすばやく抽出できます。これは非常に便利です。

たとえば、次の使用方法

In [1]: key, _, value ='I love Python'.partition(' love ')

In [2]: key
Out[2]:'I'

In [3]: value
Out[3]:'Python'

Recommended Posts

Pythonの分解とパッケージ化
Python and Go
Pythonの内省と考察
[python] ubuntuの下のpython2とpython3
Python3の構成とentry.md
Pythonの自動操作とメンテナンス2
Pythonの紹介と環境のインストール
Pythonはクローラーとアンチクローラーを知っています
centos7はpython3とipythonをインストールします
ubuntu18.04python3.8をコンパイルしてインストールします
Centos6.10はpythonとyumを再インストールします
Pythonオープン読み取りおよび書き込み
CentOS7はpython3とpip3をインストールします
Pythonの自動操作とメンテナンス1
Pythonのデータ構造とアルゴリズム
Pythonマルチプロセスおよびマルチスレッドの基本
CentOS6.9はpythonをコンパイルしてインストールします
CentOS6はpython3をコンパイルしてインストールします
Pythonのジェネレーターとイテレーター
Pythonファイルの読み取りおよび書き込み操作
Pythonとjsのインタラクティブな呼び出しメソッド
魔法の方法とPythonの使用
Pythonは正と負の数を判断します
pythonftpアップロードファイルとフォルダー
Pythonクローラー|コグニティブクローラーのリクエストとレスポンス
FMアルゴリズム分析とPython実装
pythonの一般的なエラーと解決策
Python関数の定義とパラメーターの説明
CentOSはPython3とpip3をすばやくインストールします
pythonクローラーのMongodbとpythonの相互作用
Python3をインストールし、CentOS8でansible
PDFおよびCDFの例を処理するPython
株で遊んでPythonを学んだ
centos7でpython3環境を構成し、
Pythonはjsonファイルを読み書きします
Pythonはユーザー名とパスワードの検証を実装しています
CentOS7の下にPython3とPyをインストールします
Pythonの基本的な構文と数値タイプ
Python学習OSモジュールと使用法
Pythonプロセスとスレッドの要約ケース分析
およびおよびまたはPythonでの使用方法
Pythonのトリックとトリック-更新を続けます...
交差点のPython実装とIOUチュートリアル
python-2入門:関数と辞書
NaiveBayesアルゴリズムとそのPython実装
Centospython3コンパイルインストールとコンパイルgccアップグレード
派生物を計算してプロットするpythonの例
セントス環境でのPythonとスクレイプ展開
Pythonは、単一にリンクされたリストと辞書を実装します
python3およびnginxプロジェクトをubuntu18.04にデプロイします
pythonはreturnとyieldをどのように区別しますか
Pythonファイルとディレクトリの操作コードの概要
Pythonマルチスレッドとプログラムロックについて話す
Pythonプロセスとスレッドの要約ケース分析