美文网首页
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:多组数据用"相同规律"随机洗牌

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