職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

Python--タプル--9(並び替えsorted 関数)

2020年12月04日 | スーパーセキュリティ
タプルの要素を昇順または降順に並び替える(sorted 関数)


【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【要素を並び替える】
要素を並び替えるには組み込み関数の sorted 関数を使用
・書式
newlist = sorted(iterable)

サンプルコード
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> mytuple = ("C", "A", "B")
>>> # 並べ替えを行う
>>> newlist = sorted(mytuple)
>>> print(newlist)
['A', 'B', 'C']
>>> # リストからタプルを作成する
>>> newtuple = tuple(newlist)
>>> print(newtuple)
('A', 'B', 'C')
>>>

【要素の値のデータ型が異なっていた場合】
・整数と浮動小数点数の場合
サンプルコード
>>> numtuple = (5, 3.14, 4.78, 4)
>>> newlist = sorted(numtuple)
>>> print(tuple(newlist))
(3.14, 4, 4.78, 5)
>>>

・数値と文字列が混在している場合
>>> mytuple = ("80", 75, 45, "68")
>>> newlist = sorted(mytuple)
エラー
Traceback (most recent call last):
File "", line 1, in <module>
newlist = sorted(mytuple)
TypeError: '<' not supported between instances of 'int' and 'str'
>>>

【並べ替えるときの昇順と降順を切り替える】
・降順で並び替えをする場合
書式
newlist = sorted(iterable, reverse=True)

サンプルコード
>>> colortuple = ("Blue", "Red", "Green", "White", "Black")
>>> upcolortuple = tuple(sorted(colortuple)) #昇順
>>> downcolortuple = tuple(sorted(colortuple, reverse=True)) #降順
>>> print("Orig:", colortuple)
Orig: ('Blue', 'Red', 'Green', 'White', 'Black')
>>> print("ASC: ", upcolortuple) #昇順
ASC: ('Black', 'Blue', 'Green', 'Red', 'White')
>>> print("DESC:", downcolortuple) #降順
DESC: ('White', 'Red', 'Green', 'Blue', 'Black')
>>>

【要素の値を他の関数に渡して帰ってきた値を使って並び替える】
並び替えを行うときに、要素の値をそのまま使って比較するのではなく、一度指定した関数に要素の値を渡して帰ってきた値を使って比較する。
・書式
newlist = sorted(iterable, key=関数名)

・絶対値
>>> mytuple = (5, -4, -7, 6)
>>> tuple(sorted(mytuple))
(-7, -4, 5, 6)
>>> tuple(sorted(mytuple, key=abs)) #絶対値
(-4, 5, 6, -7)
>>>

・文字列の長さを使って並び替えをする場合(len 関数)
>>> mytuple = ("apple", "pen", "desk", "banana")
>>> tuple(sorted(mytuple)) #タプル
('apple', 'banana', 'desk', 'pen')
>>> tuple(sorted(mytuple, key=len)) #文字数
('pen', 'desk', 'apple', 'banana')
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする