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


Python中的列表通常是一维列表,元素一个接一个地排列。但在二维列表中,我们有嵌套在外层列表中的列表。在本文中,我们将学习如何从给定的一个维列表创建一个二维列表。我们还向程序提供二维列表中元素数量的值。

使用append和索引

在这种方法中,我们将创建一个for循环来遍历二维列表中的每个元素,并将其用作要创建的新列表的索引。我们通过从零开始递增索引值并将其添加到从二维列表中接收到的元素来保持索引值的递增。

示例

# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# Length of 2D lists needed
len_2d = [ 2, 4]

#Declare empty new list
res = []
def convert(listA, len_2d):
   idx = 0
   for var_len in len_2d:
      res.append(listA[idx: idx + var_len])
      idx += var_len
convert(listA, len_2d)
print("The new 2D lis is: \n",res)

运行上述代码,我们得到以下结果:

输出

The new 2D lis is:
[[1, 2], [3, 4, 5, 6]]

使用islice

islice函数可用于根据二维列表的要求切片给定列表中的某些元素。因此,在这里我们遍历二维列表的每个元素,并使用该值2来切片原始列表。我们需要itertools包来使用islice函数。

示例

from itertools import islice
# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# Length of 2D lists needed
len_2d = [ 3, 2]

# Use islice
def convert(listA, len_2d):
   res = iter(listA)
   return [list(islice(res,i)) for i in len_2d]
res = [convert(listA, len_2d)]
print("The new 2D lis is: \n",res)

运行上述代码,我们得到以下结果:

输出

The new 2D lis is:
[[['Sun', 'Mon', 'Tue'], ['Wed', 'Thu']]]

更新于:2020年12月28日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告