【发布时间】:2020-12-09 20:58:56
【问题描述】:
假设我有一个列表列表,例如:
list0 = [[a, .5, .3], [b, .3, .8], [c, .7, 1.3], [d, 1.03, .2]]
我想调用每个子列表的第二个元素以输出到我认为这可行的列表。
输入:print(list0[:][1])
输出:[b, .3, .8]
但我希望得到这个:(.5, .3, .7, 1.03)
有没有一种方法可以调用所有子列表并访问它们的元素,而无需遍历整个列表来创建新列表?你能比较一下时间并描述为什么我们不能调用所有或一系列子列表来从每个子列表中获取一个元素而不循环两次,一次是获取子列表,一次是访问每个子列表?
【问题讨论】:
-
list0[:]只是制作列表的(浅)副本。它不是一个迭代器。您必须使用循环(或列表理解)来访问子列表。 -
列表理解与仅循环遍历这个浅拷贝有何不同?如果您已经调用了每个子列表,它仍然有效,但仍然感觉效率低下,为什么不能同时调用那里的元素?
-
list0[:]只是索引与切片的变体,list0[:2]。因为列表处理是我多年前从基本 Python 书籍中学到的,所以我不能直接向您指出文档。 “无循环”做事的想法属于numpy,而不是python列表。 -
我意识到这是一个非常基本的问题,我准备深入了解数据类型的存储方式。为了快速回答,这种“没有循环”的方法是否仅适用于 numpy 列表或数组?