この記事で共有した内容は、Pythonの高度な実践機能です。必要な友達はこの記事の内容を参照してください
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’}]
方法 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]
>>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1]
>>>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 = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
この時点で並べ替えられた L は 2 番目のキーワードに従ってのみランク付けされていることがわかります。
2 番目のキーワードで並べ替えてから、次の基準で並べ替えたい場合はどうなるでしょうか。最初のキーワードは 2 つの方法があります
例 8:
>>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:(x[1],x[0])) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
例 9:
>>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=operator.itemgetter(1,0)) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] #实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个
関連する推奨事項:
Python 関数の詳細な構造についてPython 関数のマップ、フィルター、リデュースについての詳細な説明
以上がPythonの高度な実践機能(更新中)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。