ホームページ  >  記事  >  バックエンド開発  >  Pythonの高度な実践機能(更新中)

Pythonの高度な実践機能(更新中)

不言
不言オリジナル
2018-04-13 17:11:251328ブラウズ

この記事で共有した内容は、Pythonの高度な実践機能です。必要な友達はこの記事の内容を参照してください

assertアサーションステートメントの追加方法。例外パラメーター

assert の例外パラメーターは、アサーションを説明し、何が問題だったのかをよりよく理解するために、実際にはアサーション式の後に文字列情報を追加します。形式は次のとおりです。
assert 式 [, 引数]

assert 式 [, 引数]


assert len(lists) >=5,'リスト内の要素の数は 5 未満です'
assert 2== 1,'2 は 1 ' と等しくありません

2.list 複雑な並べ替え

data_list = []  
data_list.append({'softname':'1','version':'1.2.2.2'})  
data_list.append({'softname':'7','version':'1.2.2.2'})  
data_list.append({'softname':'5','version':'1.2.2.2'})  
data_list.append({'softname':'2','version':'1.2.2.2'})  
data_list.append({'softname':'3','version':'1.2.2.2'})  
data_list.append({'softname':'9','version':'1.2.2.2'})  
#升序  
data_list.sort(key=lambda obj:obj.get('softname'), reverse=False)  

print data_list  
#[{'softname': '1'}, {'softname': '2'}, {'softname': '3'}, {'softname': '5'}, {'softname': '7'}, {'softname': '9'}]  
#降序  
data_list.sort(key=lambda obj:obj.get('softname'), reverse=True)  
print data_list  
#[{'softname': '9'}, {'softname': '7'}, {'softname': '5'}, {'softname': '3'}, {'softname': '2'}, {'softname': '1’}]

List を並べ替えるには、Python には 2 つの方法があります

方法 1. List の組み込み関数 list.sort を使用して並べ替えます

Pythonの例:

>>> list = [2,5,8,9,3]    
>>> list    [2,5,8,9,3]    
>>> list.sort()    
>>> list    [2, 3, 5, 8, 9]
list.sort(func=None, key=None, reverse=False)方法2. シーケンス型関数sorted(list)を使用して並べ替えます(2.4から)

Pythonの例:

>>> list = [2,5,8,9,3]    
>>> list    [2,5,8,9,3]    
>>> sorted(list)   
[2, 3, 5, 8, 9]

2つのメソッドの違い:

sorted(list)の戻り値式 Mode として使用できるオブジェクト。元のリストは変更されず、新しいソートされたリスト オブジェクトが生成されます。

list.sort() はオブジェクトを返さず、元のリストを変更します。 その他の並べ替えの例: 例 1: 順方向並べ替え

>>>L = [2,3,1,4]  
>>>L.sort()  
>>>L  
>>>[1,2,3,4]

例 2: 逆方向並べ替え
>>>L = [2,3,1,4]  
>>>L.sort(reverse=True)  
>>>L  
>>>[4,3,2,1]

例 3: 2 番目のキーワードを並べ替える

>>>L = [('b',6),('a',1),('c',3),('d',4)]   
>>>L.sort(lambda x,y:cmp(x[1],y[1]))   
>>>L  
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

例 4: 2 番目のキーワードを並べ替える

>>>L = [('b',6),('a',1),('c',3),('d',4)]  
>>>L.sort(key=lambda x:x[1])  
>>>L  
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

例 5: 2 番目のキーワードを並べ替える

>>>L = [('b',2),('a',1),('c',3),('d',4)]  
>>>import operator  >>>L.sort(key=operator.itemgetter(1))   
>>>L  
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

例 6: (DSU メソッド: Decorate-Sort-Undercorate)

>>>L = [('b',2),('a',1),('c',3),('d',4)]  
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort  >>>A.sort()  
>>>L = [s[2] for s in A] 
>>>L  
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

上記では、リストを並べ替えるための 6 つのメソッドが示されています。その中で、例 3.4.5.6 は、リスト項目

内の項目を使用して並べ替えの役割を果たすことができます。

効率の比較:

cmp < DSU < key

実験による比較では、方法 3 は方法 6 より遅く、方法 4 は方法 6 より遅く、方法 4 と方法 5 は基本的に遅くなります。同等

複数のキーワード比較並べ替え:

例 7:

>>>L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]  
>>> L.sort(key=lambda x:x[1])  
>>> L  
>>>[(&#39;d&#39;, 2), (&#39;c&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]

この時点で並べ替えられた L は 2 番目のキーワードに従ってのみランク付けされていることがわかります。

2 番目のキーワードで並べ替えてから、次の基準で並べ替えたい場合はどうなるでしょうか。最初のキーワードは 2 つの方法があります

例 8:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]  
>>> L.sort(key=lambda x:(x[1],x[0]))  
>>> L  
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]

例 9:

>>> L = [(&#39;d&#39;,2),(&#39;a&#39;,4),(&#39;b&#39;,3),(&#39;c&#39;,2)]  
>>> L.sort(key=operator.itemgetter(1,0))  
>>> L  
>>>[(&#39;c&#39;, 2), (&#39;d&#39;, 2), (&#39;b&#39;, 3), (&#39;a&#39;, 4)]  

#实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个

関連する推奨事項:

Python 関数の詳細な構造について

Python 関数のマップ、フィルター、リデュースについての詳細な説明

以上がPythonの高度な実践機能(更新中)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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