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

2023-07-1416:47:54编程语言入门到精通Comments914 views字数 2909阅读模式

Python编程中,列表是一种常用的数据类型。当我们遇到了一个嵌套列表,如果想将它扁平化为一维列表,就可以使用下面10种方法之一来实现这个需求。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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扁平化为一维列表的结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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扁平化为一维列表的结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

6. 使用sum()函数

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

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

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

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

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

以上10种方式,你了解哪几种呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51528.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/51528.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定