1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonのリストを一部シャッフルする方法(random.shuffleにて)

Posted at

はじめに

日本語記事が見当たらなかったので、書きました。

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])』が効かなかったのか・・・
私なりの説明はあります。後日時間があるときに別記事として記載するかもしれません。
また、もっと良い実装例や便利な手段があれば、是非ともご教示願います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?