列表使用:對::
回答
它們是等價的,但我打算將它們稱爲arr
,因爲大概是對於一個numpy數組。
arr[0::,5]
arr[0:,5]
他們也相當於
arr[:, 5]
在片中的:
符號給出
arr[start:end:step]
對於行。在逗號後面,列(對於更多維度也是如此)是一樣的。
如果離開符中的任意出來,他們被認爲是:
arr[0:len(arr):1]
所以,如果你都不填,並保持分離,你必須:
arr[::]
中當然,你可以插入任何默認值,它仍然是相同的:
arr[0::]
arr[:len(arr):]
arr[::1]
你只需要把separa扭轉以消除歧義。暗示該step
大小,你必須有兩個分離器:
arr[::1]
但暗示的end
,你只需要一個:
arr[:end]
但是,如果你沒有分離,這只是獲得一個項目,而不是一個切片,所以第一個分離器是必要的:
arr[0] # only the first item!
arr[0:] # all items
好,完整的答案。儘管如此,也許你想指出等價和默認值確實適用於numpy數組,但不一定適用於實現'__getitem__'的其他對象。 ([0 ::,5]確實與[0:,5]相同,但[:,5]不是)。 – Hyperboreus
是的,正如你在答案中提到的那樣:)假設OP對切片對象的熟悉度,我會在評論中留下足夠的警告。 – askewchan
這兩個示例都通過(slice(0, None, None), 5)
到__getitem__
函數list
(您的變量名爲list
)。沒有區別。你的問題可以簡化爲:
是a[0::]
一樣a[0:]
,得到的答覆仍然是「是的」。
另一方面,a[:0]
與a[::0]
不相同,a[0:0]
也不相同,與a[0::0]
相同。
#! /usr/bin/python3
class A:
def __getitem__ (self, item):
print (item)
a = A()
a [0::,5] #passes a tuple
a [0:,5] #passes a tuple
a [0:] #passes a slice
a [0::]
a [:0]
a [::0]
a [0:0]
a [0::0]
print ('Askewchan\'s conjecture:')
a [:]
a [0:]
現在的__getitem__
返回值調用一個元組,取決於其所調用的對象的實現。
也有效地等同於'a [:]',因爲'0'與其他的一樣。 – askewchan
@askewchan這取決於對象的實現。不必'slice(0,None,None)'必須產生與'slice(None,None,None)'相同的值。儘管如此,對於像列表這樣的內置迭代器來說也是如此。 – Hyperboreus
- 1. 使用對象列表
- 2. 使用列表返回對象但使用WHERE篩選列表
- 3. 使用序列化對象列表
- 4. 使用對象列表填充gridview列
- 5. 如何使用對象屬性列表排序對象列表
- 6. 使用LINQ對象列表中的對象反向列表
- 7. 使用列表理解刪除對稱對(在列表理解中使用notin)
- 8. 使用列表對象列表和搜索對象列表中的項目(python)
- 9. 列表對列表的對列表PROLOG
- 10. 使用列表理解表達式填充對象列表
- 11. 使用對象串行器對列表進行序列化
- 12. 使用json對象的鄰接列表
- 13. 使用外部對象訪問列表
- 14. 使用Linq排序Person對象列表
- 15. 使用ThreadPools搜索對象列表
- 16. 使用對象列表構建樹
- 17. 使用MyBatis插入對象列表3
- 18. 使用LINQ比較對象的列表
- 19. 對狀態機使用數組列表
- 20. 使用JAX-RS返回對象列表
- 21. 使用匿名對象創建列表
- 22. 使用Struts2添加對象到列表
- 23. 對多列表格使用CSS
- 24. 使用LINQ過濾對象列表
- 25. 填充對象的列表(使用LINQ?)
- 26. 在對象列表中使用IN
- 27. 使用MVC Razor傳遞列表對象
- 28. 使用AJAX更新對象列表
- 29. 使用繼承的對象列表
- 30. 使用volley檢索json對象列表
在所有 – JBernardo
沒有區別也不語法由默認的Python認可'list'類型;你在說NumPy'數組嗎?我爲你添加了'numpy'標籤,隨時可以再次刪除它(但是擴展你的問題以增加細節,但不清楚你所要求的)。 –
對於第二個問題,你可以試試。 – DaoWen