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

Python爬虫与数据挖掘

共 2686字,需浏览 6分钟

 · 2022-08-11

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

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

大家好,我是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】给出的思路和代码解析,感谢粉丝【冯诚】、【此类生物】、【艾希.觉罗】等人参与学习交流。

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

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

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报