Python 如何将一个列表随机分成两个长度相同的列表

Python 如何将一个列表随机分成两个长度相同的列表,python,python-3.x,list,Python,Python 3.x,List,我有一个函数,希望将一个列表分割为两个具有相同长度和随机列表项的列表 代码: 输出如下所示: ['mohsen', 'hasan', 'mahdi', 'daniyal', 'reza', 'alireza'] ['amin', 'komeil'] 但我希望它是这样的: ['daniyal', 'reza', 'hasan', 'alireza'] ['komeil', 'mahdi', 'mohsen', 'amin'] 相同长度的随机变量似乎需要更改剪切变量 随机导入 l=['amin'

我有一个函数,希望将一个列表分割为两个具有相同长度和随机列表项的列表

代码:

输出如下所示:

['mohsen', 'hasan', 'mahdi', 'daniyal', 'reza', 'alireza']
['amin', 'komeil']
但我希望它是这样的:

['daniyal', 'reza', 'hasan', 'alireza']
['komeil', 'mahdi', 'mohsen', 'amin']

相同长度的随机变量

似乎需要更改
剪切
变量

随机导入
l=['amin','hasan','reza','mohsen','alireza','mahdi','daniyal','komeil']
half_len=len(l)//2
随机。洗牌(l)
l1=l[:一半长度]
l2=l[一半长度:]
打印(l1、l2)

似乎需要更改
cut
变量

随机导入
l=['amin','hasan','reza','mohsen','alireza','mahdi','daniyal','komeil']
half_len=len(l)//2
随机。洗牌(l)
l1=l[:一半长度]
l2=l[一半长度:]
打印(l1、l2)

randint
只需返回一个介于
[0,len(playerslist))
之间的整数值,因此使用
cut
对列表进行切片,列表将以随机两种不同的长度结束

简单地说,您可以:

def playersorting(playerslist):
随机。洗牌(玩家列表)
剪切=整数(len(playerslist)/2)
列表_1=播放器列表[:剪切]
list_2=播放器列表[剪切:]
打印(列表1)
打印(列表2)

randint
只需返回一个介于
[0,len(playerslist))
之间的整数值,因此使用
cut
对列表进行切片,列表将以随机两种不同的长度结束

简单地说,您可以:

def playersorting(playerslist):
随机。洗牌(玩家列表)
剪切=整数(len(playerslist)/2)
列表_1=播放器列表[:剪切]
list_2=播放器列表[剪切:]
打印(列表1)
打印(列表2)

一种方法是使用[
random.sample()][1]

from random import sample

def playersorting(playerslist):
    list_1 = sample(playerslist, len(playerslist) // 2)
    list_2 = [player for player in playerslist if player not in list_1]
    print(list_1)
    print(list_2)


playerslist = ['amin', 'hasan', 'reza', 'mohsen', 'alireza', 'mahdi', 'daniyal', 'komeil']
playersorting(playerslist)
说明:

  • random.sample()
    接受一个数组
    population
    和一个数字
    k
    ,并返回一个新的数组,该数组的长度
    k
    是从数组
    population
    中随机选择的元素

  • 因此
    sample(playerslist,len(playerslist)//2)
    返回一个长度为
    len(playerslist)//2
    的数组,该数组由
    playerslist
    中随机选择的元素组成

  • [player for players in player in player if player not in list_1]
    返回
    players list
    中不在前半个随机元素内的每个元素


  • 尽管建议使用此方法。

    一种方法是使用[
    random.sample()][1]

    from random import sample
    
    def playersorting(playerslist):
        list_1 = sample(playerslist, len(playerslist) // 2)
        list_2 = [player for player in playerslist if player not in list_1]
        print(list_1)
        print(list_2)
    
    
    playerslist = ['amin', 'hasan', 'reza', 'mohsen', 'alireza', 'mahdi', 'daniyal', 'komeil']
    playersorting(playerslist)
    
    说明:

  • random.sample()
    接受一个数组
    population
    和一个数字
    k
    ,并返回一个新的数组,该数组的长度
    k
    是从数组
    population
    中随机选择的元素

  • 因此
    sample(playerslist,len(playerslist)//2)
    返回一个长度为
    len(playerslist)//2
    的数组,该数组由
    playerslist
    中随机选择的元素组成

  • [player for players in player in player if player not in list_1]
    返回
    players list
    中不在前半个随机元素内的每个元素


  • 虽然建议使用这种方法。

    如果你想将一个列表分成两个大小相同的列表,那么为什么你要将
    cut
    作为随机数?只需执行
    cut=len(playerslist)//2
    @RustamGarayev Tnx…它起作用了如果你想把一个列表分成两个大小相同的列表,那你为什么要把
    cut
    作为随机数呢?只要做
    cut=len(playerslist)//2
    @RustamGarayev Tnx…它起作用了
    ['mahdi', 'amin', 'mohsen', 'reza'] 
    ['komeil', 'alireza', 'hasan', 'daniyal']
    
    import random
    
    def playersorting(playerslist):
        random.shuffle(playerslist)
        list_1 = playerslist[0:4]
        list_2 = playerslist[4:8]
    
        print(list_1)
        print(list_2)
    
    
    playerslist = ['amin', 'hasan', 'reza', 'mohsen', 'alireza', 'mahdi', 'daniyal', 'komeil']
    playersorting(playerslist)
    
    from random import sample
    
    def playersorting(playerslist):
        list_1 = sample(playerslist, len(playerslist) // 2)
        list_2 = [player for player in playerslist if player not in list_1]
        print(list_1)
        print(list_2)
    
    
    playerslist = ['amin', 'hasan', 'reza', 'mohsen', 'alireza', 'mahdi', 'daniyal', 'komeil']
    playersorting(playerslist)