将一个列表中的内容添加到多个其他可变大小的列表中,而不重复

时间:2017-07-14 06:02:01

标签: python list

说我有一个项目列表:

l1 = ['a','b','c',d','e','f','g']

现在,我想要做的是随机将此列表的内容拆分为n个列表(例如n = 3),并且定义明确(比如l2的长度为3,l3也是长度3和l4的长度为1),使得没有元件重复。即

l2 = ['a','d','e']
l3 = ['b','f',g']
l4 = ['c']

如何实现这样的目标?谢谢。

2 个答案:

答案 0 :(得分:2)

一种方法是随机混洗列表,然后将其拆分为您想要的尺寸:

Indicator name  Jan-17  Feb-17  Mar-17
A               5       2       9
B               0       5       3
C               9       6       3
D               9       1       8

答案 1 :(得分:0)

这适用于任何数字n< = list of list

import random


def get_random_sublist(n, li):
    random.shuffle(l1)
    start = 0
    for k in range(n - 1, 0, -1):
        tmp = random.randrange(start + 1, len(li) - k + 1)
        yield li[start:tmp]
        start = tmp
    yield l1[start:]


l1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

for i in get_random_sublist(3, l1):
    print(i)

输出:

['d', 'b']
['c']
['f', 'g', 'a', 'e']