📜  Python|将一维列表转换为可变长度的二维列表

📅  最后修改于: 2022-05-13 01:54:29.361000             🧑  作者: Mango

Python|将一维列表转换为可变长度的二维列表

给定一维列表“lst”和可变长度列表“var_lst”,编写一个Python程序将给定的一维列表转换为给定可变长度的二维列表。

例子:

Input : lst = [1, 2, 3, 4, 5, 6]
        var_lst = [1, 2, 3]
Output : [[1], [2, 3], [4, 5, 6]]

Input : lst = ['a', 'b', 'c', 'd', 'e']
        var_lst = [3, 2]
Output : [['a', 'b', 'c'], ['d', 'e']]


方法#1:列表切片

# Python3 program to Convert 1D 
# list to 2D list
from itertools import islice
  
def convert(lst, var_lst):
    idx = 0
    for var_len in var_lst:
        yield lst[idx : idx + var_len]
        idx += var_len
      
# Driver code
lst = [1, 2, 3, 4, 5, 6]
var_lst = [1, 2, 3]
print(list(convert(lst, var_lst)))
输出:
[[1], [2, 3], [4, 5, 6]]


方法 #2:使用itertools.islice()

# Python3 program to Convert 1D 
# list to 2D list
from itertools import islice
  
def convert(lst, var_lst):
    it = iter(lst)
    return [list(islice(it, i)) for i in var_lst]
      
# Driver code
lst = [1, 2, 3, 4, 5, 6]
var_lst = [1, 2, 3]
print(convert(lst, var_lst))
输出:
[[1], [2, 3], [4, 5, 6]]