Sí, Ruby tiene una sintaxis de corte de matriz muy similar a Python. Aquí está la ri
documentación para el método de índice de matriz:
--------------------------------------------------------------- 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]
para pasar del tercer elemento al último.a[2...-1]
para ir desde el tercer elemento hasta el segundo último elemento.range(10)[:5:-1]
Si desea dividir / cortar la matriz en un índice i,
fuente
Puede usar slice () para esto:
Por cierto, que yo sepa, las "listas" de Python se implementan de manera eficiente en forma dinámica. La inserción al principio está en O (n), la inserción al final se amortiza O (1), el acceso aleatorio es O (1).
fuente
slice!()
no modifica la matriz en su lugar, sino que "elimina los elementos dados por un índice (opcionalmente hasta elementos de longitud) o por un rango". por ruby-doc.org/core-2.2.3/Array.html#method-i-slice-21otra forma es usar el método de rango
fuente
Ruby 2.6 Rangos sin fin / sin fin
fuente
Me gustan los rangos para esto:
Sin embargo, tenga mucho cuidado sobre si el punto final está incluido en su rango. Esto se vuelve crítico en una lista de longitud impar donde necesita elegir dónde va a romper el medio. De lo contrario, terminarás contando dos veces el elemento del medio.
El ejemplo anterior consistentemente pondrá el elemento del medio en la última mitad.
fuente
(list.length / 2.0).ceil
para poner consistentemente el elemento del medio en la primera mitad si lo necesita.