首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的列表索引不像预期的那样工作

Python中的列表索引不像预期的那样工作
EN

Stack Overflow用户
提问于 2014-02-02 19:41:56
回答 3查看 55关注 0票数 0

我用Python创建了一个列表,如下所示

代码语言:javascript
复制
gona = [[1,5,6],[3,7,10]]

这是一个列表。我想做的是在两个内部列表中获得第二个条目。我试着跟着。

代码语言:javascript
复制
gona[:][1] 

但这给了我第二份清单。

代码语言:javascript
复制
[3,7,10]

当我按以下方式更改订单时,

代码语言:javascript
复制
gona[1][:]

结果也是一样的。原因是什么?怎样才能做到我前面所说的呢?我在Windows 7中使用Python2.7.3,我也在Ubuntu13.10中使用过Python2.7.5。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-02 19:42:59

使用列表理解:

代码语言:javascript
复制
[g[1] for g in gona]

list[:]创建原始列表的完整切片副本,并不意味着“在下一次操作中遍历此列表”。

Python列表对象可以容纳任何类型的对象,除了列表理解之外,没有分层语法允许您从包含的列表对象中选择,因为Python无法预先知道只包含可索引对象。

也许您被numpy.array对象搞混了,它可以做出这样的假设,并实现更丰富的切片语法。

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 19:43:15

就像你说的,这是一份清单。没有简单的索引方法可以在两个内部列表中获得第二个条目,因为列表并不是以这种方式(即,列的方向)。也就是说,外部列表并不“知道”其内容是您想要得到的其他列表。你能从外部列表中得到的只有一个内部列表。(甚至没有什么能保证每个内部列表都有第二个元素。你本可以做gona = [[1], [], [1, 2, 3, 4, 5]]的。

你可以做[row[1] for row in gona]

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 19:49:16

如果要在内部列表中获取元素,是元素不存在的情况下的默认值,则可以使用以下方法:

代码语言:javascript
复制
index = 1
[row[index] if len(row) > index else None for row in gona]  # None is the default value here
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21515290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档