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

python中的列表通常是一维列表,其中元素依次列出。但是在2D列表中,列表嵌套在外部列表中。在本文中,我们将看到如何从给定的1D列表中创建2D列表。我们还向程序提供2D列表内元素数量的值。

使用append和index

在这种方法中,我们将创建一个for循环,以循环浏览2D列表中的每个元素,并将其用作要创建的新列表的索引。我们通过从零开始并将其添加到从2D列表中接收到的元素中来不断增加索引值。

示例

# 给定列表
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# 需要2D列表的长度
len_2d = [ 2, 4]

#声明空白的新列表
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函数可用于根据2D列表的要求对给定列表与一定数量的元素进行切片。因此,本周我们将浏览2D列表的每个元素,并使用该值2分割原始列表。我们需要itertools包才能使用islice函数。

示例

from itertools import islice
# 给定列表
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

# 需要2D列表的长度
len_2d = [ 3, 2]

# 使用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']]]
猜你喜欢