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

随机化两个列表并在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的头文件

头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经看…

ceph-rest-api_快速检查REST API是否有效的方法-从清单文件中获取详细信息

ceph-rest-api在某些情况下,您可能想快速验证部署在开发,测试或生产环境中的REST API是否完全可以访问。 一种常见的实现方法是构建通用资源,该资源可提供例如已部署API的版本。 您可以手动触发对此资源的请求,或者更好的是&#…

set trans 必须是事务处理的第一个语句_MySQL中特别实用的几种SQL语句送给大家

在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑。减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮。实用的SQL1.插入或替换如果我们想插入一条新记录…

C语言预处理命令总结

预处理指令是以#号开头的代码行,# 号必须是该行除了任何空白字符外的第一个字符。# 后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转…

突破极限–如何使用AeroGear Unified Push for Java EE和Node.js

在2014年底的AeroGear队宣布红帽的JBoss统一推送服务器的可用性xPaaS 。 让我们仔细看看! 总览 统一推送服务器允许开发人员将本地推送消息发送到Apple的推送通知服务(APNS)和Google的云消息传递(GCM)。 它具有内置的…

java 运行os文件路径_Java获取文件路径的几种方式

关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相 对路径:相对与某…

mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

题记关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区、QQ群等讨论最多的问题之一。 问题包含但不限于: 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal选型有什么不同,如何取舍&#xff1…

C memset 踩坑

一、前言memset 作为对内存初始化的函数,还是有不少坑和误区的,今天就来对这个函数作一个总结。二、函数作用最简单的调用就是将一个数组清零,代码如下:const int maxn 1024; int a[maxn]; memset(a, 0, sizeof(a)); // a[0]a[1…

eap和psk_针对WildFly和EAP运行Java Mission Control和Flight Recorder

eap和pskJava Mission Control (JMC)使您可以监视和管理Java应用程序,而无需引入通常与这些类型的工具相关的性能开销。 它使用为正常的JVM动态优化而收集的数据,从而形成了一种非常轻量级的方法来观察和分析应用程序代码中的问题…

java与html关联_java-如何在HTML文件中搜索某些标签?

我在Java中有一个小问题.操作方法:我想在HTML文件中搜索标签href和src,然后获取与该标签关联的URL.最好的方法是什么?谢谢您的帮助.最好的祝福.解决方法:这是我用来完全完成您想要做的事情的代码,但首先让我给您一些提示.如果您在Java Swing环境中,请确保…

python中history()_keras中的History对象用法

keras中的fit_generator和fit函数均返回History对象,那么History怎么用呢?事实上History对象已经记录了运行输出。在了解之前,我们甚至自己定义回调函数记录损失和准确率等。相关keras源码位于网址:class History(Callback):"…

C语言合法标识符

Problem Description输入一个字符串,判断其是否是C的合法标识符。Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。Output对于每组输入数据&#…

线程魔术技巧:使用Java线程可以做的5件事

Java线程最鲜为人知的事实和用例是什么? 有些人喜欢爬山,有些人喜欢跳伞。 我,我喜欢Java。 我喜欢它的一件事是,您永不停止学习。 您每天使用的工具通常可以为您带来全新的面貌,以及您还没有机会看到的方法和有趣的用…

python正则表达式面试_Python面试 Re-正则表达式

1.python正则表达式中匹配(match)和查找(search)的区别答:正则表达式中match和search的方法比较相似相同点:都是在一个字符串s中寻找pat子字符串,如果能找到,就返回一个Match对象,如果找不到,就返回None。不…

java webview框架_java - Android WebView 无法正常显示网页图表

Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近5秒(甚至更多)时间才会显示出来。研究了很久,搜遍了国外很多网站,也看过PhoneGap的代码,一直无解。 …

每日干货丨C语言数组知识点总结

一.一维数组1. 初始化方法第一种:完全初始化。依次赋值如:a[5] {2,3,4, 5, 6};a[] {1,2, 3, 4, 5, 6};第二种:不完全初始化。初始化式中的值从a[0]开始,依次向后赋值&a…

python isnumber_Python正课18 —— 基本数据类型 - 字符串类型

一:定义msg hello #本质:name str(任意形式内容)二.类型转换数据类型转换:str()可以将任意数据类型转换成字符串类型,例如# msg hello # msg str(hello)# print(type(msg))三:使用(内置方法)优先掌握:1.按索引取值…

微服务构架 esb总线_好的微服务架构=企业服务总线(ESB)的灭亡?

微服务构架 esb总线如今,似乎每个人都在谈论微服务。 您可以在数百篇文章和博客文章中读到很多有关该主题的文章,但是我建议的出发点是Martin Fowler的这篇文章 , 该文章引发了有关这种新建筑概念的大量讨论。 本文介绍了创建良好的微服务架构…

java8方法引用符合_Java8 方法引用和构造方法引用

如果不熟悉Java8新特性的小伙伴,初次看到函数式接口写出的代码可能会是一种懵逼的状态,我是谁,我在哪,我可能学了假的Java,(・∀・(・∀・(・∀・*),但是语言都是在进步的,就好比面向对象的语言…

C语言指南-数组之谜

前言在C语言中,数组和指针似乎总是“暧昧不清”,有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前,我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们…