Ja, Ruby hat eine sehr ähnliche Array-Slicing-Syntax wie Python. Hier ist die ri
Dokumentation für die Array-Indexmethode:
--------------------------------------------------------------- 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]
um vom 3. zum letzten Element zu gelangen.a[2...-1]
um vom 3. Element zum vorletzten Element zu gelangen.range(10)[:5:-1]
Wenn Sie das Array auf einem Index i teilen / schneiden möchten,
quelle
Sie können dazu Slice () verwenden :
Übrigens, nach meinem besten Wissen sind Python- "Listen" nur effizient implementierte dynamisch wachsende Arrays. Die Einfügung am Anfang erfolgt in O (n), die Einfügung am Ende wird in O (1) abgeschrieben, der Direktzugriff ist O (1).
quelle
slice!()
Ändert das Array nicht an Ort und Stelle, sondern "löscht die Elemente, die durch einen Index (optional bis zu Länge Elemente) oder durch einen Bereich angegeben werden." per ruby-doc.org/core-2.2.3/Array.html#method-i-slice-21Eine andere Möglichkeit ist die Verwendung der Bereichsmethode
quelle
Ruby 2.6 Beginless / Endless Ranges
quelle
Ich mag Bereiche dafür:
Seien Sie jedoch sehr vorsichtig, ob der Endpunkt in Ihrem Bereich enthalten ist. Dies wird bei einer Liste mit ungerader Länge kritisch, bei der Sie auswählen müssen, wo Sie die Mitte durchbrechen möchten. Andernfalls wird das mittlere Element doppelt gezählt.
Im obigen Beispiel wird das mittlere Element konsistent in die letzte Hälfte eingefügt.
quelle
(list.length / 2.0).ceil
, um das mittlere Element in der ersten Hälfte konsistent zu platzieren, wenn Sie dies benötigen.