Python三维列表[:][0][0]索引不生效,如何得到预期输出?
错误原因分析
- 你代码中使用的
list1[:]是Python列表的全量切片语法,执行后会返回和原列表内容完全一致的新列表,因此list1[:][i][1]等价于list1[i][1],也就是取外层第i个二维列表组的第2个元素(索引从0开始),这就是你当前输出[4,5,6]和[16,17,18]的原因。 - Python原生列表不支持类似
[:, i, 1]的多维度同时切片语法,这类语法仅适用于numpy等第三方数值计算库的数组类型。
正确实现代码
你期望的输出是依次取两个外层列表组中,第1、2个(索引0、1)二维列表的第2个元素(索引1),并排打印,对应的代码如下:
# 写法1:外层组数固定为2的场景 for j in range(2): print(list1[0][j][1], list1[1][j][1])
如果外层组数量不固定,可以用更通用的写法:
# 写法2:适配任意数量外层组的场景 for j in range(2): print(' '.join(str(group[j][1]) for group in list1))
运行上述任意代码都可以得到你期望的输出:
2 14 5 17
内容的提问来源于stack exchange,提问作者clickclack
相关产品推荐
相关产品推荐

