对于列表的列表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。
提前致谢。
答案 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