リストの値を並び替える
リスト内の値は後から並び替えることもできます。アルファベット順や数値を昇順、降順に並べ替える操作を解説します。ちなみに、この並び替える操作のことを「ソート」と呼びます。
文字列をアルファベット順に並び替える
リスト内の文字列をアルファベット順に並び替えるにはsort()関数を使います。引数には何も入力する必要はありません。
#リストの値をアルファベット順に並び替える
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
fx.sort()
print(fx)
コードを実行してみます。
['AUDJPY', 'CADJPY', 'CHFJPY', 'EURJPY', 'GBPJPY', 'USDJPY']
このようにリスト内の文字列がアルファベット順に並び変わりました。sort()は一時的に並び替えているのではなく、元のリストを直接並び替えています。
数値を昇順に並び替える
次にリスト内の数値を昇順に並び替えてみます。昇順に並び替えるには、先ほどと同様にsort()関数を使用します。
#リストの値を昇順に並び替える
value = [105.98, 138.39, 124.71, 75.28, 115.94, 79.15]
value.sort()
print(value)
コードを実行してみます。
[75.28, 79.15, 105.98, 115.94, 124.71, 138.39]
このようにリスト内の数値が昇順に並び変わりました。
数値を降順に並び替える
リスト内の数値を降順に並び替えるときもsort()関数を使用しますが、引数にはrevers=Trueを入力します。先ほどの昇順では引数に何も入力しませんでしたが、reverse=Falseでも昇順に並び替えることもできます。
#リストの値を降順に並び替える
value = [105.98, 138.39, 124.71, 75.28, 115.94, 79.15]
value.sort(reverse = True)
print(value)
コードを実行してみます。
[138.39, 124.71, 115.94, 105.98, 79.15, 75.28]
このようにリスト内の数値が降順に並び変わりました。
リストの値をランダムに並び替える
リスト内の値をランダムに並び替えたいときは、プログラミング初心者のPython入門#11|標準ライブラリをインポートして関数を使うで解説したrandomモジュールのshuffle()を使用します。
#リストの値をランダムに並び替える
import random
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
random.shuffle(fx)
print(fx)
このコードを実行するとリスト内の値が実行するたびにランダムに入れ替わったリストが表示されます。
並び替えたリストを新しく作成する
リストをソートするとき、元のリストは変更せずそのままにしておきたい場合があると思います。その場合は、sort()ではなくsorted()を使用します。
#アルファベット順に並び替えたリストを新しく作成する
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
fx_narabikae = sorted(fx)
print(fx)
print(fx_narabikae)
コードを実行してみます。
['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
['AUDJPY', 'CADJPY', 'CHFJPY', 'EURJPY', 'GBPJPY', 'USDJPY']
元のリストfxはそのままで、アルファベット順に並び替えたリストfx_narabikaeを新たに作成できました。
ちなみに降順に並び替えるときはsorted(fx, reverse=True)と入力します。
リスト内の値を調べる
リスト内に任意の値が含まれているか、任意の値が何個あるのかを調べる方法を解説します。
リスト内に指定した値があるか調べる|完全一致
リスト内に指定した値があるか調べるにはin演算子を使用します。in演算子を利用した方法では完全一致の値しか調べることはできません。
#リストの値をin演算子で調べる
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
print('USDJPY' in fx)
print('NZDJPY' in fx)
print('USD' in fx)
コードを実行してみます。
True
False
False
「USDJPY」はリスト内にあるのでTrue、「NZDJPY」はリスト内にないのでFalse、「USD」もリスト内にない(完全一致ではない)のでFalseとなります。
リスト内に指定した値があるか調べる|部分一致
リスト内に指定した値が部分一致を含めて検索したい場合、for文を組み合わせることで可能になります。for文の解説については、プログラミング初心者のPython入門#14|条件分岐<for文>を参照してください。
#部分一致を含めてリスト内の値を調べる
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
symbol = 'USD'
result = False
for currency in fx:
if symbol in currency:
result = True
break
print(result)
このコードを実行するとTrueとなり、部分一致を含めて調べられていることがわかりました。もちろん、symbolの中にリスト内に含まれない値を入れるとFalseとなります。
検索した値の個数を調べる
検索した値の個数を調べるにはcount()関数を使用します。
#指定した値がリスト内に何個あるか調べる
fx = ['USDJPY', 'GBPJPY', 'EURJPY', 'AUDJPY', 'CHFJPY', 'CADJPY']
print(fx.count('USDJPY'))
print(fx.count('USD'))
このコードを実行すると、「USDJPY」はリスト内に1つあるので「1」、「USD」はリスト内にない(完全一致ではない)ので、「0」と表示されます。
今回のまとめ
・リスト内の値をアルファベット順、昇順に並び替えるにはsort()
・リスト内の値を降順に並び替えるにはsort(reverse=True)
・並び替えたリストを新たに作成するにはsorted()
・リスト内に指定した値が含まれるか調べるにはin演算子(完全一致)
・リスト内に指定した値が何個あるか調べるにはcount()
コメント