打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多个list嵌套,怎么才能把含有'a','c'的子list取出来并且分别放到新的list呢?

何时倚虚幌,双照泪痕干。

大家好,我是Python进阶者。

一、前言

昨天在Python白银交流群【NicePlus】问了一个Python列表的基础问题,下图是他的需求:

整理了下原始数据,如下:

l1 = [['a''b''c'], [1, 2, 3], ['c''c''c']]
l2 = [[1, 1, 1], ['a''a''a'], ['c', 0, 0, 0]]
l3 = [['c''c''c'], [5, 6, 7], [7, 3, 4], [0, 'a']]

二、实现过程

这里【const GF = null】给了一个代码,如下所示。

from itertools import chain
l1 = [['a''b''c'], [1, 2, 3], ['c''c''c']]
l2 = [[1, 1, 1], ['a''a''a'], ['c', 0, 0, 0]]
l3 = [['c''c''c'], [5, 6, 7], [7, 3, 4], [0, 'a']]
l = []
for i in chain(l1, l2, l3):
    for j in i:
        if j in ('a''b''c'):
            l.append(i)
            break
print(l)

运行结果如下图所示:

其中那个chain函数用于同时遍历;那个break用于去重,不加的话,就会出现下图的结果。

后来【dcpeng】在这个基础上给了一个列表推导式写法,代码如下所示:

l1 = [['a''b''c'], [1, 2, 3], ['c''c''c']]
l2 = [[1, 1, 1], ['a''a''a'], ['c', 0, 0, 0]]
l3 = [['c''c''c'], [5, 6, 7], [7, 3, 4], [0, 'a']]
all_list = l1 + l2 + l3
l = []
res = [l.append(i) for i in all_list for j in i if j in ('a''b''c')]
final_res = []
result = [final_res.append(item) for item in l if item not in final_res]
print(final_res)

看上去倒是有些冗余,但是又不知道怎么优化了,起码功能是实现了的,运行结果如下图所示:

完美地解决粉丝的问题!

三、总结

大家好,我是进阶者。这篇文章主要盘点了一个Python列表处理的基础问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【NicePlus】提问,感谢【const GF = null】、【dcpeng】给出的思路和代码解析,感谢粉丝【冯诚】、【此类生物】、【艾希.觉罗】等人参与学习交流。

------------------- End -------------------

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python应用小技巧 | list列表数据处理、列表排序、列表去重、列表合并
Python进阶 列表推导式详解总结
Python怎么合并两个列表
小白学 Python 爬虫(26):为啥上海二手房你都买不起
不再写Python for 循环
Python编程新手须知:避免代码陷阱的秘诀
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服