ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python | 列表的扁平化处理

2022-04-29 00:31:15  阅读:184  来源: 互联网

标签:扁平化 Python 列表 itertools result print import data out


一、使用sum()函数,可展开两层的嵌套列表

a = [[1, 2, 3], [ 4, 5, 6], [7], [8, 9]]
out = sum(a, [])
print(out)

output:[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

二、使用itertools

import itertools

a = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
out = list(itertools.chain.from_iterable(a))
print(out)

output:[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

三、使用operator、reduce函数

import operator
from functools import reduce

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(reduce(operator.add, a))

a:[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

上面方法可能只对二层列表有效,如果无法确定嵌套深度,有如下的方法:

四、可以使用递归函数来解决(万能方式)

data = [[[1],[2],[3]],[4,5],[[[[[[6]]]]]]]
print(data)
result = []
def take_out(arr):
    for item in arr:
        if isinstance(item,int):
            result.append(item)
        else:
            take_out(item)
take_out(data)
print(result)

out:[[[1], [2], [3]], [4, 5], [[[[[[6]]]]]]]
    [1, 2, 3, 4, 5, 6] 

 

五、使用标准库itertools中的chain()函数

from itertools import chain
from copy import deepcopy

data = [[[1],[2],[3]],[[4],[5],[6]]]
print(data)
result = deepcopy(data)

while True:
    result = list(chain(*result))
    if isinstance(result[0], int):
        break
print(result)


[[[1], [2], [3]], [[4], [5], [6]]]
[1, 2, 3, 4, 5, 6]

 

六、扩展库numpy

import numpy as np

data = [[[1],[2],[3]],[[4],[5],[6]]]
print(data)

temp_data = np.array(data)
a = list(temp_data.reshape(temp_data.size,))
print(a)


[[[1], [2], [3]], [[4], [5], [6]]]
[1, 2, 3, 4, 5, 6]

 

标签:扁平化,Python,列表,itertools,result,print,import,data,out
来源: https://www.cnblogs.com/yking/p/16204490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有