Oui, Ruby a une syntaxe de découpage de tableau très similaire à Python. Voici la ri
documentation de la méthode d'index de tableau:
--------------------------------------------------------------- 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]
pour passer du 3ème élément au dernier.a[2...-1]
pour passer du 3ème élément à l'avant-dernier élément.range(10)[:5:-1]
Si vous voulez diviser / couper le tableau sur un index i,
la source
Vous pouvez utiliser slice () pour cela:
Au fait, à ma connaissance, les "listes" Python sont simplement implémentées de manière efficace dans des tableaux à croissance dynamique. L'insertion au début est en O (n), l'insertion à la fin est amortie O (1), l'accès aléatoire est O (1).
la source
slice!()
ne modifie pas le tableau en place, mais "supprime le ou les éléments donnés par un index (éventuellement jusqu'à des éléments de longueur) ou par une plage." par ruby-doc.org/core-2.2.3/Array.html#method-i-slice-21une autre façon est d'utiliser la méthode range
la source
Ruby 2.6 Gammes sans début / sans fin
la source
J'aime les gammes pour ça:
Cependant, soyez très prudent si le point de terminaison est inclus dans votre plage. Cela devient critique sur une liste de longueur impaire où vous devez choisir où vous allez casser le milieu. Sinon, vous finirez par compter deux fois l'élément du milieu.
L'exemple ci-dessus placera systématiquement l'élément du milieu dans la dernière moitié.
la source
(list.length / 2.0).ceil
pour placer systématiquement l'élément du milieu dans la première moitié si vous en avez besoin.