说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)在 Python 中,将嵌套列表(如 a)中的内部一级数据合并为一个扁平化的列表(如 b),通常称为 “展平” 操作,请写代码完成。
a = [[['RD', 'red', '红色'],
['BU', 'blue', '蓝色']],
[['BK', 'black', '黑色'],
['WH', 'white', '白色']]]
b = [['RD', 'red', '红色'],
['BU', 'blue', '蓝色'],
['BK', 'black', '黑色'],
['WH', 'white', '白色']]
可以使用列表推导式或 itertools.chain
来实现。以下是两种实现方式:
方法 1:使用列表推导式
a = [[['RD', 'red', '红色'],
['BU', 'blue', '蓝色']],
[['BK', 'black', '黑色'],
['WH', 'white', '白色']]]
# 使用列表推导式展平
b = [item for sublist in a for item in sublist]
print(b)
'''
[['RD', 'red', '红色'],
['BU', 'blue', '蓝色'],
['BK', 'black', '黑色'],
['WH', 'white', '白色']]
'''
解释:
for sublist in a
:遍历外层列表 a
,每次取出一个子列表 sublist
。for item in sublist
:遍历子列表 sublist
,每次取出一个内部列表 item
。item
被收集到最终的列表 b
中。方法 2:使用 itertools.chain
from itertools import chain
a = [[['RD', 'red', '红色'],
['BU', 'blue', '蓝色']],
[['BK', 'black', '黑色'],
['WH', 'white', '白色']]]
# 使用 itertools.chain 展平
b = list(chain.from_iterable(a))
print(b)
'''
[['RD', 'red', '红色'],
['BU', 'blue', '蓝色'],
['BK', 'black', '黑色'],
['WH', 'white', '白色']]
'''
解释:
chain.from_iterable(a)
:将 a
中的每个子列表连接成一个迭代器。list(...)
:将迭代器转换为列表。a
的结构),推荐使用 列表推导式,因为它简单直观。itertools.chain
,它更灵活且适用于多层嵌套的展平。这两种方法都能高效地将嵌套列表展平为单层列表。
查看相关链接中的知识。
如果使用 pandas 可见 pandas习题 073:展平操作列表。
(完)
更新时间:2025-02-13 10:30:01 标签:python 习题 列表 展平