簡體   English   中英

在python中的列表切片時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM