旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【Python】 二つのリストの対応関係を保ったままシャッフルする

リストx=[1,2,3,4]があったとして、このxと対応関係にあるリストy=[11,12,13,14]があったとします。xをシャッフルしたいのですが、この時yも対応関係を保ったままシャッフルしたいと考えています。例えばリストxがシャッフルによりx=[3,2,4,1]となった場合、yはy=[13,12,14,11]となって欲しい状況です。このやり方がStackOverflowに書かれていたのでメモします。

Numpy配列

python - Better way to shuffle two numpy arrays in unison - Stack Overflow

import numpy as np

x = np.array([1,2,3,4])
y = np.array([11,12,13,14])
p = np.random.permutation(len(x))
x = x[p]
y = y[p]

リスト

python - Shuffle two list at once with same order - Stack Overflow

import random

x = [1,2,3,4]
y = [11,12,13,14]
p = list(zip(x, y))
random.shuffle(p)
x, y = zip(*p)