Python:将列表拆分为列表列表

时间:2017-07-22 22:16:17

标签: python-3.x

假设我有清单:

list = [(4, 7), (3, 7), (5, 7), (4, 6), (4, 8), (2, 7), (3, 6), (3, 8), (6, 7)]

我想将列表分成长度的子列表:[2, 3, 4](这些长度可能会有所不同)

生成:sublist_list = [[(4, 7), (3, 7)],[(5, 7), (4, 6), (4, 8)], [(2, 7), (3, 6), (3, 8), (6, 7)]]

我能做到这一点的最快捷方式是什么?提前谢谢。

3 个答案:

答案 0 :(得分:1)

myList = [(4, 7), (3, 7), (5, 7), (4, 6), (4, 8), (2, 7), (3, 6), (3, 8), (6, 7)]

listOfLengths = [2, 3, 4]

def getSublists(listOfLengths,myList):
    listOfSublists = []
    for i in range(0,len(listOfLengths)):
        if i == 0:
            listOfSublists.append(myList[:listOfLengths[i]])
        else:
            listOfSublists.append(myList[listOfLengths[i-1]:listOfLengths[i-1]+listOfLengths[i]])
    return listOfSublists

然后,如果您在getSublists(原始列表输入)和myList(包含子列表长度的列表)上调用listOfLengths,则

#In: getSublists(listOfLengths,myList)
#Out: [[(4, 7), (3, 7)], [(5, 7), (4, 6), (4, 8)], [(4, 6), (4, 8), (2, 7), (3, 6)]]

答案 1 :(得分:0)

如何简单地迭代列表并附加到新列表?

c = 0
for sublist in list:
    sublistlist[len(sublistlist)-1].append(sublist)
    c += 1
    if c % 2:
        sublistlist.append([])

答案 2 :(得分:0)

你可以在python中用户列表[i:j]功能,它返回一个新的列表包含 list [i]列出原始列表的[j-1]个元素。

base = 0
Lengths =[] #list of lengths
for num in Length:
   sub_list.append(List[base:num+base])
   base += num #jump to next length