Python中配对列表的随机样本

Dan*_*age 6 python random-sample

我有两个列表xy,长度为n,x iy i形成一对.如何在保留配对信息的同时从这两个列表中随机抽取m个值(例如x [10]和y [10]将在结果样本中一起)

我最初的想法是这样的.

  • 使用zip创建元组列表
  • 随机播放元组列表
  • 从列表中选择前m个元组
  • 将元组分解为新的配对列表

代码看起来像这样.

templist = list()
for tup in zip(x, y):
    templist.append(tup)
random.shuffle(templist)
x_sub = [a for a, b in templist[0:m]]
y_sub = [b for a, b in templist[0:m]]
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很狡猾.有什么方法可以让我更清晰,更简洁,还是Pythonic?

小智 9

也许你的意思是采样m个元素

x_sub, y_sub = zip(*random.sample(list(zip(x, y)), m))
Run Code Online (Sandbox Code Playgroud)