多个list嵌套,怎么才能把含有'a','c'的子list取出来并且分别放到新的list呢?
回复“书籍”即可获赠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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
评论