はじめに
日本語記事が見当たらなかったので、書きました。
random.shuffleの概略
Pythonの標準ライブラリの中に『random』モジュールがあります。
その中に、shuffleという、リストをシャッフルしてくれる大変便利な関数があります。
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>import random
>>> list_a = [1,2,3,4,5]
>>> list_a
[1, 2, 3, 4, 5]
>>> random.shuffle(list_a)
>>> list_a
[1, 3, 4, 5, 2]
リストの中身を一部シャッフルするには・・・?
リストの中身を一部シャッフルしたい時、最初に思いつきそうなのが、
このような方法かもしれません。
>>> random.shuffle(list_a[0:3])
>>> list_a
[1, 2, 3, 4, 5]
?うまくいきませんね?
下記のような方法を取ると、一部だけシャッフルできます。
>>> list_b=list_a[0:3]
>>> list_b
[1, 2, 3]
>>> random.shuffle(list_b)
>>> list_b
[3, 2, 1]
>>> list_a[0:3]=list_b
>>> list_a
[3, 2, 1, 4, 5]
ちゃんと一部だけ、シャッフルできました。
備考
なぜ『random.shuffle(list_a[0:3])』が効かなかったのか・・・
私なりの説明はあります。後日時間があるときに別記事として記載するかもしれません。
また、もっと良い実装例や便利な手段があれば、是非ともご教示願います。