我在Python中创建了一个列表,如下所示
gona = [[1,5,6],[3,7,10]]
这是一份清单。我想要做的是在两个内部列表中获得第二个条目。我试着跟随。
gona[:][1]
但这给了我第二个清单。
[3,7,10]
当我按如下方式更改订单时,
gona[1][:]
它给出了相同的结果。这是什么原因?怎么能做我上面说的话? 我在Windows 7中使用Python 2.7.3。我也在Ubuntu 13.10中使用Python 2.7.5进行了尝试。
答案 0 :(得分:2)
使用列表理解:
[g[1] for g in gona]
list[:]
创建原始列表的完整切片副本,但这并不意味着“遍历此列表以进行下一个操作”。
Python列表对象可以包含任何类型的对象,没有切片语法允许您从列表推导中选择包含的列表对象,因为Python无法预先知道您只包含可索引对象。
也许你对numpy.array
个对象感到困惑,可以做出这样的假设并实现更丰富的切片语法。
答案 1 :(得分:2)
如你所说,这是一份清单清单。没有简单的索引方法来获取两个内部列表中的第二个条目,因为列表不是以这种方式定向的(即,列式)。也就是说,外部列表不“知道”其内容是您想要获取其元素的其他列表。从外部列表中可以获得的只是内部列表之一。 (没有什么能保证每个内部列表都有第二个元素。你可以做gona = [[1], [], [1, 2, 3, 4, 5]]
。)
你可以[row[1] for row in gona]
。
答案 2 :(得分:2)
如果你想在内部列表中获取一个元素或一个默认值,如果该元素不存在,你可以使用它:
index = 1
[row[index] if len(row) > index else None for row in gona] # None is the default value here