2011-06-25 70 views
0

我有一個名單讓我們說[[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]和它的名字是somelist。我想要做somelist[:2][:2]並且返回[[1,2], [1,2]]。因此,它將列表切片,然後列出並返回該列表。甚至可以在python的一行中做到這一點?如何切片在Python中切片的列表?

+0

當然,它可以在同一行,但你要使用的語法指定列表中的前兩個元素,那麼前兩個元素再次;你想要在每個成員上分一杯羹。無論如何,這屬於SO,很快就會遷移。 – 2011-06-26 00:15:18

+0

...或者有人可能只是在這裏回答。你永遠不會知道。 – larsks

回答

8

您可以使用list comprehension來完成此操作。我改變了你的樣品輸入所選擇什麼使它更清晰:

>>> l = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] 
>>> print [x[:2] for x in l[:2]] 
[[1, 2], [5, 6]] 
0

您的列表始終處於一個4x4矩陣16元?如果你只是想拿到4組右下角的元素,嘗試:

>>> l = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] 
>>> print [l[2][:2], l[3][:2]] 
[[1, 2], [1, 2]] 

否則,一般的解決方案被別人提及的名單理解是更好的。

這將是有趣的基準測試,看看哪個更快爲您的用例。雖然這聽起來像是我過早的優化。

1

多維分層很容易與numpy

import numpy 
a = numpy.array([[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]) 
print(a[:2,:2]) 
+0

+1這個有趣的提示。 –