Tak, Ruby ma bardzo podobną składnię podziału tablic do Pythona. Oto ri
dokumentacja metody indeksu tablicy:
--------------------------------------------------------------- Array#[]
array[index] -> obj or nil
array[start, length] -> an_array or nil
array[range] -> an_array or nil
array.slice(index) -> obj or nil
array.slice(start, length) -> an_array or nil
array.slice(range) -> an_array or nil
------------------------------------------------------------------------
Element Reference---Returns the element at index, or returns a
subarray starting at start and continuing for length elements, or
returns a subarray specified by range. Negative indices count
backward from the end of the array (-1 is the last element).
Returns nil if the index (or starting index) are out of range.
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[6, 1] #=> nil
a[5, 1] #=> []
a[5..10] #=> []
a[2..-1]
aby przejść od trzeciego elementu do ostatniego.a[2...-1]
aby przejść od trzeciego elementu do przedostatniego elementu.range(10)[:5:-1]
Jeśli chcesz podzielić / wyciąć tablicę w indeksie i,
źródło
Możesz użyć do tego slice () :
Nawiasem mówiąc, według mojej najlepszej wiedzy, „listy” w Pythonie są po prostu efektywnie zaimplementowane w dynamicznie rosnących tablicach. Wstawienie na początku znajduje się w O (n), wprowadzenie na końcu jest amortyzowane O (1), dostęp losowy to O (1).
źródło
slice!()
nie modyfikuje tablicy w miejscu, a raczej „usuwa element (y) podane przez indeks (opcjonalnie elementy do długości) lub przez zakres”. per ruby-doc.org/core-2.2.3/Array.html#method-i-slice-21innym sposobem jest użycie metody zakresu
źródło
Ruby 2.6 Beginless / Endless Ranges
źródło
Lubię zakresy do tego:
Uważaj jednak, czy punkt końcowy znajduje się w Twoim zakresie. Staje się to krytyczne w przypadku listy o nieparzystej długości, na której musisz wybrać miejsce, w którym zamierzasz złamać środek. W przeciwnym razie środkowy element zostanie policzony podwójnie.
Powyższy przykład konsekwentnie umieści środkowy element w ostatniej połowie.
źródło
(list.length / 2.0).ceil
aby konsekwentnie umieścić środkowy element w pierwszej połowie, jeśli tego potrzebujesz.