2012-12-21 31 views
-1

在Python的好片方法一樣片通過特殊的方式數組

my_array[3:] 

我知道有Ruby的切片方法爲好,但也沒有方法,它不完全一樣,Python的my_array[3:](如果不知道數組的大小)。是不是?

+0

我想你可以做'my_array [3 ..- 1]'。它只是'my_array [3:-1]'的翻譯。 – Blender

+0

如果您告訴我們該Python代碼的功能可能會有所幫助。 – pguardiario

+0

它返回從第三個元素開始的所有元素。 –

回答

1
class Array 
    def sub_array(pos, len = -1) 
     if len == -1 
     then # the rest of the array starting at pos 
      len = self.size - pos 
     end 
     self.slice(pos, len) 
    end 
end 

my_array = %w[a b c d e f] 
p my_array.sub_array(3)  #=> ["d", "e", "f"] 
p my_array.sub_array(5)  #=> ["f"] 
p my_array.sub_array(9)  #=> nil 
p my_array.sub_array(3, 2) #=> ["d", "e"] 
p my_array.sub_array(3, 9) #=> ["d", "e", "f"] 

其實,這原本是一個字符串的方法子。

1

請看看這裏的紅寶石slice methods。並作爲@Blender建議你可以通過像範圍:

my_array[3..-1] 

編輯:

範圍例如

array = ["a", "b", "c", "d", "e"] 
array[3..-1] 

將導致["d", "e"]d的索引是3和e是最後元件。

更多的例子

a = [ "a", "b", "c", "d", "e" ] 
a[2] + a[0] + a[1] #=> "cab" 
a[6]     #=> nil 
a[1, 2]    #=> [ "b", "c" ] 
a[1..3]    #=> [ "b", "c", "d" ] 
a[4..7]    #=> [ "e" ] 
a[6..10]    #=> nil 
a[-3, 3]    #=> [ "c", "d", "e" ] 
# special cases 
a[5]     #=> nil 
a[5, 1]    #=> [] 
a[5..10]    #=> [] 
+0

它是做什麼的?我無法在文檔中找到示例。 –

+0

查看已更新的答案並舉例說明。提供一個範圍將使用該範圍內的元素返回一個新的數組。 – Amyth

+0

我的意思是,文檔中沒有例子。 –