随机化两个列表并在python中维护顺序

说我有两个简单的清单,

a = ['Spears', "Adele", "NDubz", "Nicole", "Cristina"]

b = [1,2,3,4,5]

len(a) == len(b)

我想做的是将a和a随机化,但要保持顺序。 因此,类似:

a = ["Adele", 'Spears', "Nicole", "Cristina", "NDubz"]

b = [2,1,4,5,3]

我知道我可以使用以下方法来随机排列一个列表:

import random

random.shuffle(a)

但这只是将a随机化,而我想将a随机化,并保持列表b中的“随机顺序”。

希望就如何实现这一目标提供任何指导。

JohnJ asked 2020-01-13T02:54:49Z

6个解决方案

84 votes

我将两个列表合并在一起,将结果列表随机排序,然后将它们拆分。 这利用了zip()

a = ["Spears", "Adele", "NDubz", "Nicole", "Cristina"]

b = [1, 2, 3, 4, 5]

combined = list(zip(a, b))

random.shuffle(combined)

a[:], b[:] = zip(*combined)

Tim answered 2020-01-13T02:55:10Z

16 votes

使用zip,它具有可以“两种”方式工作的出色功能。

import random

a = ['Spears', "Adele", "NDubz", "Nicole", "Cristina"]

b = [1,2,3,4,5]

z = zip(a, b)

# => [('Spears', 1), ('Adele', 2), ('NDubz', 3), ('Nicole', 4), ('Cristina', 5)]

random.shuffle(z)

a, b = zip(*z)

answered 2020-01-13T02:55:29Z

12 votes

为了避免重新发明轮子,请使用sklearn

from sklearn.utils import shuffle

a, b = shuffle(a, b)

Nimrod Morag answered 2020-01-13T02:55:49Z

8 votes

请注意,Tim的答案仅适用于Python 2,不适用于Python3。如果使用Python 3,则需要执行以下操作:

combined = list(zip(a, b))

random.shuffle(combined)

a[:], b[:] = zip(*combined)

否则会出现错误:

TypeError: object of type 'zip' has no len()

Adam_G answered 2020-01-13T02:56:14Z

2 votes

另一种方法可能是

a = ['Spears', "Adele", "NDubz", "Nicole", "Cristina"]

b = range(len(a)) # -> [0, 1, 2, 3, 4]

b_alternative = range(1, len(a) + 1) # -> [1, 2, 3, 4, 5]

random.shuffle(b)

a_shuffled = [a[i] for i in b] # or:

a_shuffled = [a[i - 1] for i in b_alternative]

这是相反的方法,但是仍然可以帮助您。

glglgl answered 2020-01-13T02:56:38Z

0 votes

这是我的风格:

import random

def shuffleTogether(A, B):

if len(A) != len(B):

raise Exception("Lengths don't match")

indexes = range(len(A))

random.shuffle(indexes)

A_shuffled = [A[i] for i in indexes]

B_shuffled = [B[i] for i in indexes]

return A_shuffled, B_shuffled

A = ['a', 'b', 'c', 'd']

B = ['1', '2', '3', '4']

A_shuffled, B_shuffled = shuffleTogether(A, B)

print A_shuffled

print B_shuffled

Nadav B answered 2020-01-13T02:56:58Z

python列表中随机两个_随机化两个列表并在python中维护顺序相关推荐

  1. python将10到1递减_递归地将列表递减1

    不管怎样,这是学习递归的一种糟糕的方法,因为你用它来做一些本质上不是递归的事情.如果你的老师真的要你写一个程序,让列表中的元素递归地递减,那就让他/她感到羞耻.在 正如Haidro所指出的,解决这个问 ...

  2. python 将单词分割成字母_拆分两个字母创建单词python 3

    我正在尝试编写一个代码,它将最终解码以下格式的文件中的单词:first letter, last letter rest of word 然后代码将获取这些单词并与单词表交叉检查,以确定哪些单词不是实 ...

  3. ggplot2箱式图两两比较_作图技巧024篇ggplot2在循环中的坑

    "ggplot2在循环中的输出"生活科学哥-R语言科学 2020-12-23  8:28ggplot2用过之后,你肯定会爱上它:结合一些不错的包,可以得到非常有展现力的图片,但是呢 ...

  4. python需要多大的硬盘_适合新手练习的几个python小项目

    关于python练习的小项目,其实就是一些常用的模块的针对练习 一.找出电脑中遗忘的大文件 # !/usr/bin/env python # _*_ coding:utf-8 -*- import o ...

  5. python编程书籍1020python编程书籍_从零单排之玩转Python安全编程(II)

    转自:http://www.secpulse.com/archives/35893.html 都说Python大法好,作为一名合格的安全从业人员,不会几门脚本语言都不好意思说自己是从事安全行业的. 而 ...

  6. python 引用库的点.号_给大家分享一些实用的Python库

    halo,大家好,我是特仑苏,今天给大家分享一些Python库,希望可以给大家带来一些用处! Python附带了几个预打包的库.但是,还有许多其他库可用于高级解释通用编程语言.您还可以从中了解异步Py ...

  7. python回归结果可视化图表解读_一个基于可视化理论的完美Python图表,快学起来

    全文共3114字,预计学习时长14分钟 图源:unsplash 将数据转换为可视化图表是门学问.本文介绍了能从经典的<定量信息的视觉展示>(Edward Tufte)中学到的大部分知识,并 ...

  8. 每个python对象都具有布尔值_百度T7架构师透析Python对象你需要知道这些

    1. Python对象 Python使用对象模型来存储数据.构造任何类型的值都是一个对象. 所有的Python对象都拥有三个特性:身份,类型和值. 身份: 每一个对象都有一个唯一的身份标识自己,任何对 ...

  9. python零基础入门教程免费版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...

最新文章

  1. windbg-.process切换进程
  2. python删除一个文件_Python 实现一个小功能: 删除某路径下文件及文件夹的脚本...
  3. Hashtable、HashMap、TreeMap总结
  4. 图片压缩软件_简单易用的图片压缩软件gt;给图片减肥
  5. 给萌新的Flexbox简易入门教程
  6. mysql-cluster5.7搭建集群(实际测试有效)
  7. Java Collection小结
  8. 计算机等级考试无纸化模拟软件(免费版)
  9. 解决网易云音乐ubuntu客户端播放中无声音
  10. iOS 屏幕旋转监听
  11. 涂涂乐的详细实现之四--unity3d调用EmguCV实现图片识别
  12. 从阿里云购买、域名购买、SSL免费购买到SSL集成开发(网络编程安全三)
  13. stimulsoft入门教程:简单列表报表
  14. 阿里云centos下载地址
  15. ASEMI快恢复二极管FR207参数,FR207图片,FR207应用
  16. Microsoft Word 文档修改默认字体
  17. 小技巧:小米手机和小米电脑“勾搭”也能组建家庭安防监控
  18. usrp b210 参数记录
  19. jQuery获取子类第n个元素
  20. Scratch3.0——助力新进程序员理解程序(案例八、等差数列计算1)

热门文章

  1. 展望Java的未来:空值类型
  2. Spring Boot Redis简介
  3. 使用JPA和@NamedQueries的Spring数据
  4. 什么是javax.ws.rs.core.context? [ 第2部分 ]
  5. 打破冷漠僵局文章_研究僵局–第2部分
  6. 实践中的事件源和CQRS
  7. afterclass_通过beforeClass和afterClass设置增强Spring Test Framework
  8. Hystrix简介– Hello World
  9. JDK 9 REPL:入门
  10. 一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)