在python中切片列表时出错

时间:2013-11-19 06:26:53

标签: python list slice

对于列表的列表x,当我想获得x中所有列表的第一个成员时,我输入x [:] [0]。但它给了我x中的第一个列表。有人可以解释为什么会这样吗?

这是一个例子。

x=[[1,2],[3,4]]
print x[0][:]
print x[:][0]

我对x[:][0]x[0][:]得到了相同的答案我得到了相同的答案,即[1,2]。 我使用的是Python 2.6.6。

提前致谢。

6 个答案:

答案 0 :(得分:3)

x[:]只返回x的内容。因此x[:][0]x[0]相同。没有内置支持“垂直”切割列表列表。您必须使用@ squiguy的评论建议的列表理解。

答案 1 :(得分:1)

x[:]只会创建x的浅表副本。因此,x[:][0]x[0][:]相同(两者都与x[0]相同)。

Numpy非常适合你想要做的事情。

x = numpy.array([[1,2], [3,4]])
x[:,0]
x[0,:]

答案 2 :(得分:0)

试试这个,

x=[[1,2],[3,4]]
print x[0][0]
print x[1][0]

for child in x:
    print child[0]

答案 3 :(得分:0)

要补充@BrenBarn答案,要解决您的问题,您可以使用:

first_numbers = [l[0] for l in x]

答案 4 :(得分:0)

使用以下陈述之一

print x[:][1]

or

print x[1][:]

or

print x[1]

都会产生相同的输出。

答案 5 :(得分:0)

几乎使用numpy语法

>>> import numpy as np
>>> x = np.array([[1,2],[3,4]])
>>> x[:,0]
array([1, 3])

如果你想用数组做一些棘手的事情,考虑一下你是否应该使用numpy