美文网首页
Python:多组数据用"相同规律"随机洗牌

Python:多组数据用"相同规律"随机洗牌

作者: 胜负55开 | 来源:发表于2019-11-28 20:48 被阅读0次

前提:当有多组长度相同的数据时,需要同时对它们按照相同的规律随机洗牌!注意:必须是按照"相同规律"!因为要保持彼此元素间的"对应关系"不能变!

包:from random import shuffle
辅助函数:zip

操作很简单,一个简单例子就能实现:

from random import shuffle

x = [ 1, 2, 3, 4, 5]
y = ['a', 'b', 'c', 'd', 'e']

shuffle_xy = list( zip(x,y) )  # zip函数:把里面的可迭代对象,"对应位置"元素合并成一个个元组
shuffle( shuffle_xy )    # 以"合并元组"为单位,洗牌
x, y = zip(*shuffle_xy)  # 返回的是元组:洗牌后的元组

# 再转为列表:
x = list(x)
y = list(y)

# 结果:
x, y
Out[4]: ([3, 2, 1, 4, 5], ['c', 'b', 'a', 'd', 'e'])

如果数据是"嵌套"的,只随机最大的单位:不会连嵌套内的元素也随机了!

from random import shuffle

# 存在"嵌套"的两组数据:
x = [ (1,10), (2,10), (3,10), (4,10), (5,10)]
y = [('a','cug'), ('b', 'cug'), ('c', 'cug'), ('d', 'cug'), ('e', 'cug')]

shuffle_xy = list( zip(x,y) )
shuffle( shuffle_xy )
x, y = zip(*shuffle_xy)
x = list(x)
y = list(y)

# 结果:以最大单位进行随机
Out[3]: 
([(1, 10), (5, 10), (3, 10), (2, 10), (4, 10)],
 [('a', 'cug'), ('e', 'cug'), ('c', 'cug'), ('b', 'cug'), ('d', 'cug')])

补充:zip内置函数的使用

相关文章

  • Python:多组数据用"相同规律"随机洗牌

    前提:当有多组长度相同的数据时,需要同时对它们按照相同的规律随机洗牌!注意:必须是按照"相同规律"!因为要保持彼此...

  • 【十一】数组洗牌函数

    关于专题【vue开发音乐App】 如何优雅地将一个数组打乱?打乱意味着要随机、没有任何规律,就像洗牌那样,所以用M...

  • 随机扫雷面,去重[...new Set(arr)]

    利用随机洗牌在10*10表格内输出随机20个O 来自 Knuth洗牌算法 ,Knuth的书《The Art of ...

  • Python数据类型转换

    Python数据类型之间的转换 查看变量数据类型: Python数学函数 Python随机数函数

  • 集合Collections 常用的排序方法

    1.Shuffle(element):洗牌方法,将当前集合内的数据进行随机排序。 2.Reverse(elemen...

  • Python shuffle() 函数:洗牌,随机排序

    我们在具体任务中,经常会需要实现把一个列表(序列)进行随机排序,通俗地讲就是洗牌。 在Python里面,也内置了一...

  • 数据可视化<第三天>

    随机漫步 在本节中,我们将使用python来生成随机漫步数据再使用matplotlib呈现数据随机漫步:每次行走都...

  • 数组

    数组 数组就是引用变量,只是它的可以存储相同类型的多组数据。 (数据类型)数组名[]= new 数据类型[长度] ...

  • 洗牌算法

    音乐软件中的随机播放算法是怎样实现的? 洗牌算法(Shuffle) 生成一个随机数(Random) 这里给出洗牌算...

  • 【算法】随机洗牌算法-随机数组重组问题

    随机洗牌可以看成随机数组重组问题, 什么意思呢 假如我要把一副牌随机打乱重组这一副牌可以怎么做? 随机洗牌是从原数...

网友评论

      本文标题:Python:多组数据用"相同规律"随机洗牌

      本文链接:https://www.haomeiwen.com/subject/xddiwctx.html