[英]error while slicing in list of lists in python
對於列表的列表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。
提前致謝。
x[:]
僅返回x的內容。 因此x[:][0]
與x[0]
相同。 沒有內置的支持對列表列表進行“垂直”切片。 您必須使用@squiguy的注釋建議的列表理解。
x[:]
只是創建x
的淺表副本。 因此, x[:][0]
與x[0][:]
相同(都與x[0]
相同)。
不過,Numpy非常適合您要執行的操作。
x = numpy.array([[1,2], [3,4]])
x[:,0]
x[0,:]
嘗試這個,
x=[[1,2],[3,4]]
print x[0][0]
print x[1][0]
要么
for child in x:
print child[0]
為了補充@BrenBarn的答案,可以使用以下方法解決您的問題:
first_numbers = [l[0] for l in x]
使用以下語句之一
print x[:][1]
or
print x[1][:]
or
print x[1]
全部產生相同的輸出。
您幾乎正在使用numpy語法
>>> import numpy as np
>>> x = np.array([[1,2],[3,4]])
>>> x[:,0]
array([1, 3])
如果您想對數組做一些棘手的事情,請考慮是否應該使用numpy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.