Python 3は、リストをメタグループ指定列でソートする方法の分析を実現する
4566 ワード
この例では、Python 3がリストをメタグループ指定列でソートする方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
Pythonバージョン:python 3.+運転環境:Mac OS IDE:pycharm
Python内蔵のソート方法
1ソート方法の説明
Pythonにはリストに組み込まれたsort()メソッドとグローバルなsorted()メソッドの2つのソート関数があります
2基本的なリストのソート
1)
2)
3 tupleをlistの要素とする
デフォルトでsort関数とsorted関数が受信するパラメータがメタグループの場合、メタグループの最初の要素でソートしてから2番目の要素でソートし、3番目、4番目...でソートします.
簡単な例で説明します.以下のリストを例に挙げます.
ソート後の結果(0,'B')は(0,'a')の前にあることがわかります.これは、メタグループの1番目の要素で並べ替えた後、(0,'B'),(0,'a')を2番目の要素で並べ替えたのに対し、'B'のASCII符号化は'a'より小さいため、(0,'B')は(0,'a')の前に並べ替えられたからである.
では、どのようにしてソートするときに大文字と小文字を区別しないようにしますか?
これはsortメソッドとsortedメソッドのkeyパラメータを使用します.
具体的な実装を見てみましょう.
そのうちの
次のような機能があります.
アルファベットを最初のソートルールとし、アルファベットの大文字と小文字が敏感でない場合は、どのように実現しますか?
これは前に述べたように
デフォルトでsort関数とsorted関数が受信するパラメータがメタグループの場合、メタグループの最初の要素でソートしてから2番目の要素でソートし、3番目、4番目...でソートします.
Lambdaと協力してカスタムtupleを返します.コードは次のとおりです.
4[拡張]dictをlistの要素とする
このlistの要素はdict形式で、各dictには名前と上昇が保存されています.今は上昇で昇順に並べたいと思っています.
PS:ここでは、ソートに関するプレゼンテーションツールをお勧めします.参考にしてください.
挿入/選択/バブル/マージ/ヒル/クイックソートアルゴリズムプロセスツールをオンラインアニメーションで実証します.http://tools.jb51.net/aideddesign/paixu_ys
Pythonに関する詳細について興味のある読者は、「Pythonデータ構造とアルゴリズムチュートリアル」、「Pythonリスト(list)操作テクニック総括」、「Pythonコード操作テクニック総括」、「Python関数使用テクニック総括」、「Python文字列操作テクニック総括」、「Python入門と進級経典チュートリアル」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.
Pythonバージョン:python 3.+運転環境:Mac OS IDE:pycharm
Python内蔵のソート方法
1ソート方法の説明
Pythonにはリストに組み込まれたsort()メソッドとグローバルなsorted()メソッドの2つのソート関数があります
sorted(iterable,key=None,reverse=False)
#は、オブジェクト自体を変更せずに、デフォルトの昇順で並べ替えられた新しいリストを返します.reverse:-True降順-Fillseシーケンスは、すべての反復可能なオブジェクトに対して有効なlist.sort(key=None,reverse=False)
#リスト自体をソートし、新しいリストオブジェクトを返さず、デフォルトの昇順です.reverse:-True降順-Fillse順2基本的なリストのソート
1)
list.sort()
ソート
data = [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
result = data.sort()
print(data) # [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]
print(result) # None
2)
sorted()
ソート
data = [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
result = sorted(data)
print(data) # [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
print(result) # [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]
3 tupleをlistの要素とする
デフォルトでsort関数とsorted関数が受信するパラメータがメタグループの場合、メタグループの最初の要素でソートしてから2番目の要素でソートし、3番目、4番目...でソートします.
簡単な例で説明します.以下のリストを例に挙げます.
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
sorted()
で並べ替えました
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
result = sorted(data)
print(data) # [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
print(result) # [(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, 'A')]
ソート後の結果(0,'B')は(0,'a')の前にあることがわかります.これは、メタグループの1番目の要素で並べ替えた後、(0,'B'),(0,'a')を2番目の要素で並べ替えたのに対し、'B'のASCII符号化は'a'より小さいため、(0,'B')は(0,'a')の前に並べ替えられたからである.
では、どのようにしてソートするときに大文字と小文字を区別しないようにしますか?
これはsortメソッドとsortedメソッドのkeyパラメータを使用します.
具体的な実装を見てみましょう.
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
# key
result = sorted(data,key=lambda x:(x[0],x[1].lower()))
print(data) # [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
print(result) # [(0, 'a'), (0, 'B'), (1, 'A'), (1, 'B'), (2, 'A')]
そのうちの
lambda x:(x[0],x[1].lower()
は匿名関数として理解できる.次のような機能があります.
def fun(x)
return(x[0],x[1].lower())
アルファベットを最初のソートルールとし、アルファベットの大文字と小文字が敏感でない場合は、どのように実現しますか?
これは前に述べたように
デフォルトでsort関数とsorted関数が受信するパラメータがメタグループの場合、メタグループの最初の要素でソートしてから2番目の要素でソートし、3番目、4番目...でソートします.
Lambdaと協力してカスタムtupleを返します.コードは次のとおりです.
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
# x[1].lower() , sorted , ,
result = sorted(data,key=lambda x:(x[1].lower(),x[0]))
print(data) # [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
print(result) # [(0, 'a'), (1, 'A'), (2, 'A'), (0, 'B'), (1, 'B')]
4[拡張]dictをlistの要素とする
このlistの要素はdict形式で、各dictには名前と上昇が保存されています.今は上昇で昇順に並べたいと思っています.
data = [{'name': ' ', 'height': 175}, {'name': ' ', 'height': 165}, {'name': ' ', 'height': 185}]
# x['height'] tuple
result = sorted(data,key=lambda x:(x['height'],x['name']))
print(data) #
print(result)
#data :[{'name': ' ', 'height': 175}, {'name': ' ', 'height': 165}, {'name': ' ', 'height': 185}]
#result :[{'name': ' ', 'height': 165}, {'name': ' ', 'height': 175}, {'name': ' ', 'height': 185}]
PS:ここでは、ソートに関するプレゼンテーションツールをお勧めします.参考にしてください.
挿入/選択/バブル/マージ/ヒル/クイックソートアルゴリズムプロセスツールをオンラインアニメーションで実証します.http://tools.jb51.net/aideddesign/paixu_ys
Pythonに関する詳細について興味のある読者は、「Pythonデータ構造とアルゴリズムチュートリアル」、「Pythonリスト(list)操作テクニック総括」、「Pythonコード操作テクニック総括」、「Python関数使用テクニック総括」、「Python文字列操作テクニック総括」、「Python入門と進級経典チュートリアル」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.