Python将多维列表「拉伸」为一维列表的10种方式

来源:投稿 作者:Fairy
编辑:学姐

在Python编程中,列表是一种常用的数据类型。当我们遇到了一个嵌套列表,如果想将它扁平化为一维列表,就可以使用下面10种方法之一来实现这个需求。

1. 使用两层循环遍历

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = []
for sublist in lst:
    for element in sublist:
        new_lst.append(element)
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。然后创建了一个空列表new_lst。接下来使用for循环遍历lst中的每一个子列表,再使用嵌套的for循环遍历子列表中的每一个元素,并将这些元素添加到new_lst中。最后输出new_lst,即为将lst扁平化为一维列表的结果。

2. 使用flatten()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(np.array(lst).flatten())
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用NumPy库的array()方法将lst转换成了一个NumPy数组,再调用该数组的flatten()方法将其扁平化为一个一维数组。最后,将该一维数组转换成一个标准的Python列表,并将其赋值给变量new_lst。最终输出new_lst,即为将lst扁平化为一维列表的结果。

3. 使用列表解析式

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = [element for sublist in lst for element in sublist]
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。然后,使用一行代码创建了一个新的一维列表new_lst。具体来说,这行代码中使用了两层for循环,并在内部使用了列表推导式的语法。在这里,外层for循环用于遍历lst中的每一个子列表,而内层for循环则用于遍历子列表中的每一个元素。最后,在列表推导式中使用了element这个变量来存储遍历到的元素,并将其添加到新列表new_lst中。

4. 使用reduce()函数

import operator
from functools import reduce

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = reduce(operator.concat, lst)
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用reduce()函数和operator.concat函数实现将lst中的所有子列表连接在一起。具体来说,operator.concat函数用于将两个列表连接在一起,而reduce()函数则用于对lst中的每一个子列表依次执行concat操作。最终,reduce函数得到的结果是一个一维列表,存储在变量new_lst中。

5. 使用from_iterable()函数

import itertools
 
lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(itertools.chain.from_iterable(lst))
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用itertools.chain.from_iterable()函数实现将lst中的所有子列表连接在一起。具体来说,from_iterable()函数用于将一个可迭代对象中的所有元素连接到一起,而chain()函数则用于在多个可迭代对象之间建立链接。最终,使用list()函数将生成的迭代器转换为一个新的一维列表new_lst。

6. 使用sum()函数

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = sum(lst, [])
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用sum()函数实现将lst中的所有子列表连接在一起。具体来说,sum()函数用于对多个可迭代对象进行求和操作,而对于列表而言,在使用sum()函数时传入一个空列表[]作为初始值,就可以将多个子列表拼接在一起。最终,使用list()函数将生成的结果转换为一个新的一维列表new_lst。

7. 使用ravel()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(np.ravel(lst))
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy中的ravel函数对lst进行扁平化操作,并将其转换为一个一维数组。最后,使用list()函数将numpy数组转换为一个新的一维列表new_lst。

8. 使用reshape()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = np.array(lst).reshape(-1)
print(new_lst.tolist())

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy.array()函数将lst转换为一个numpy数组,并使用reshape()函数对其进行重新形状,将其扁平化为一个一维数组。最后,使用tolist()函数将numpy数组转换为一个新的一维列表new_lst。

9. 使用flatten()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = np.array(lst).flatten('C')
print(list(new_lst))

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy.array()函数将lst转换为一个numpy数组,并使用flatten()函数对其进行扁平化操作,将其扁平化为一个一维数组。需要注意的是,该函数传入的参数'C'表示扁平化时按照行优先顺序进行,也就是将每一行展开到一起。最后,使用list()函数将numpy数组转换为一个新的一维列表new_lst。

10. 使用stack()函数

import pandas as pd

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(pd.DataFrame(lst).stack())
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用pandas.DataFrame()函数将lst转换为一个DataFrame数据框,并使用stack()函数对其进行堆叠操作,将其扁平化为一个Series数据序列。然后,使用list()函数将Series转换为一个新的一维列表new_lst。

以上10种方式,你了解哪几种呢?

关注下方《学姐带你玩AI》🚀🚀🚀

回复“python”了解更多学习资料

码字不易,欢迎大家点赞评论收藏!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以通过Numpy库对一维列表进行转化为多维列表。具体的实现方法如下: import numpy as np # 定义一个一维列表 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 将一维列表转化为二维列表,共有3行3列 arr = np.array(lst).reshape(3, 3) print(arr) # 输出的结果为: # [[1 2 3] # [4 5 6] # [7 8 9]] 首先,导入numpy库,接着定义一个一维列表,然后使用np.array()函数将其转化为一个numpy数组对象。最后,使用reshape()函数将这个一维数组转化为二维数组,指定参数为(3, 3),即3行3列。 需要注意的是,reshape()函数需要保证指定的参数与一维列表的元素个数相等,否则会报错。在使用时,应根据实际需求来确定多维数组的大小和形状。 以上就是将一维列表转化为多维列表的简单实现方法,使用numpy库可以方便地进行数组操作和运算,并且在科学计算和数据分析等领域得到广泛的应用。 ### 回答2: 在Python编程中,将一维列表转化为多维列表可以使用不同的方法和技巧完成。下面是一些常见的方法和示例。 1. 列表切片方法 使用切片可以将一维列表转化为多维列表。例如,将一个长度为6的一维列表转换为3个长度为2的子列表: ```python a = [1, 2, 3, 4, 5, 6] b = [a[i:i+2] for i in range(0, len(a), 2)] # b = [[1, 2], [3, 4], [5, 6]] ``` 2. numpy库reshape方法 使用Numpy库可以方便地将一维列表转化为多维列表。可以使用`numpy.reshape`方法来进行转换。例如,将长度为9的列表转化为3行3列的二维列表: ```python import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) b = np.reshape(a, (3, 3)) # b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ``` 3. 使用zip函数和*操作符 使用`zip`函数和`*`操作符可以将一维列表转化为多维列表。例如,将长度为9的列表转化为3行3列的二维列表: ```python a = [1, 2, 3, 4, 5, 6, 7, 8, 9] b = [*zip(*[iter(a)]*3)] # b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ``` 这些是将一维列表转化为多维列表的一些方法和技巧。根据具体的场景和需求,可以选择不同的方法和技巧来完成转换。 ### 回答3: Python可以通过多方式一维列表转化为多维列表。 方法一:使用列表推导式 列表推导式是一简洁的方法,可以将一个列表转化为另一个列表。我们可以使用嵌套的循环来将一维列表转化为多维列表。例如,以下代码将长度为n的一维列表转化为m x k的二维列表。 ``` n = 9 m = 3 k = 3 # 构造一维列表 lst = list(range(n)) # 利用列表推导式将其转化为二维列表 result = [[lst[i*m+j] for j in range(k)] for i in range(m)] print(result) ``` 结果输出: ``` [[0, 1, 2], [3, 4, 5], [6, 7, 8]] ``` 方法二:使用numpy库 NumPy是一个用Python实现的科学计算库,提供了大量的数值计算工具,可以处理高维数组和矩阵。我们可以使用numpy库将一维列表转化为多维列表。 ``` import numpy as np n = 9 m = 3 k = 3 # 构造一维列表 lst = list(range(n)) # 利用numpy库将其转化为二维列表 result = np.array(lst).reshape(m,k).tolist() print(result) ``` 结果输出: ``` [[0, 1, 2], [3, 4, 5], [6, 7, 8]] ``` 方法三:使用pandas库 Pandas是Python语言的一个用于数据处理的库,它提供了一些可以快速转换数据结构的函数。我们可以使用pandas库将一维列表转化为多维列表。 ``` import pandas as pd n = 9 m = 3 k = 3 # 构造一维列表 lst = list(range(n)) # 利用pandas库将其转化为二维列表 result = pd.DataFrame(lst.reshape(m,k)).values.tolist() print(result) ``` 结果输出: ``` [[0, 1, 2], [3, 4, 5], [6, 7, 8]] ``` 因此,Python提供了多简单、高效的方法来将一维列表转化为多维列表,以便于数据处理和分析。具体使用哪一方法,需要根据具体情况而定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值