如何用一行Python代码提取嵌套列表中每个子列表的前两个元素?
解决Python嵌套列表提取子列表前两个元素的问题
嘿,我来帮你搞定这个问题!首先咱们先搞清楚你原来的代码为什么不行:a[:][0:2]其实是先通过a[:]复制了整个原列表,然后再取这个复制列表的前两个子列表,所以得到的结果会是[[1,2,3,4,5], [6,7,8,9,10]],这和你想要的“每个子列表取前两个元素”完全不是一回事~
正确的一行代码实现方法
最直观且Pythonic的方式是用列表推导式,一行就能搞定:
a = [[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15], [16,17,18,18,20]] b = [sublist[:2] for sublist in a]
运行这段代码后,b就会是你想要的结果:[[1, 2], [6, 7], [11, 12], [16, 17]]。
原理很简单:遍历原列表a中的每一个子列表sublist,对每个子列表执行sublist[:2](取该子列表的前两个元素),最后把这些结果收集成一个新列表。
另一种可选方法(用map函数)
如果你想用map函数来实现,也可以写成一行:
b = list(map(lambda x: x[:2], a))
不过相比之下,列表推导式的可读性更强,更推荐日常使用。
内容的提问来源于stack exchange,提问作者zinon
相关产品推荐
相关产品推荐

