2012-08-16 43 views
1

在括號中,蟒蛇的切片簡寫自動生成切片對象的元組:可以在括號外使用python的切片符號嗎?

class Foo(object): 
    def __getitem__(self, key): 
     print key 

Foo()[1::, 2:20:5] 

這將打印(slice(1, None, None), slice(2, 20, 5))。但據我所知,這種簡寫不適用於括號之外。

有沒有什麼方法可以在其他上下文中使用切片速記?我可以定義一個虛擬對象,它只是返回傳遞給__getitem__的任何東西 - 這至少會給我一種使用簡寫語法生成片元組的方法。有更多pythonic的方式?

回答

2

NumPy的有s_對象,會爲你做到這一點:

05205​​

,您可以輕鬆簡單地通過設置s_ = Foo(),然後使用s_,每當你想輕鬆地創建一個切片製作自己的這個版本。

2

你看到打印出的內容其實是一個很好的線索。您可以直接通過slice()全局函數創建切片對象。這些可以被傳遞用於從列表中索引。

s = slice(1, 10, 2) 
numbers = list(range(20)) 
print numbers[s] 
print numbers[1:10:2] 

這將打印兩次相同的結果[1,3,5,7,9]。

切片實例有一些屬性和方法。你可以看看幫助(切片)看更多。

+1

OP想要使用括號來生成切片對象。 – 2012-08-16 04:29:31