我用Python创建了一个列表,如下所示
gona = [[1,5,6],[3,7,10]]这是一个列表。我想做的是在两个内部列表中获得第二个条目。我试着跟着。
gona[:][1] 但这给了我第二份清单。
[3,7,10]当我按以下方式更改订单时,
gona[1][:]结果也是一样的。原因是什么?怎样才能做到我前面所说的呢?我在Windows 7中使用Python2.7.3,我也在Ubuntu13.10中使用过Python2.7.5。
发布于 2014-02-02 19:42:59
使用列表理解:
[g[1] for g in gona]list[:]创建原始列表的完整切片副本,并不意味着“在下一次操作中遍历此列表”。
Python列表对象可以容纳任何类型的对象,除了列表理解之外,没有分层语法允许您从包含的列表对象中选择,因为Python无法预先知道只包含可索引对象。
也许您被numpy.array对象搞混了,它可以做出这样的假设,并实现更丰富的切片语法。
发布于 2014-02-02 19:43:15
就像你说的,这是一份清单。没有简单的索引方法可以在两个内部列表中获得第二个条目,因为列表并不是以这种方式(即,列的方向)。也就是说,外部列表并不“知道”其内容是您想要得到的其他列表。你能从外部列表中得到的只有一个内部列表。(甚至没有什么能保证每个内部列表都有第二个元素。你本可以做gona = [[1], [], [1, 2, 3, 4, 5]]的。
你可以做[row[1] for row in gona]。
发布于 2014-02-02 19:49:16
如果要在内部列表中获取元素,或是元素不存在的情况下的默认值,则可以使用以下方法:
index = 1
[row[index] if len(row) > index else None for row in gona] # None is the default value herehttps://stackoverflow.com/questions/21515290
复制相似问题