Ya, Ruby memiliki sintaks pengiris larik yang sangat mirip dengan Python. Berikut adalah ri
dokumentasi untuk metode indeks array:
--------------------------------------------------------------- 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]
untuk berpindah dari elemen ketiga ke elemen terakhir.a[2...-1]
untuk berpindah dari elemen ketiga hingga elemen terakhir kedua.range(10)[:5:-1]
Jika Anda ingin membagi / memotong array pada indeks i,
sumber
Anda dapat menggunakan slice () untuk ini:
By the way, sejauh pengetahuan saya, "daftar" Python hanya diimplementasikan secara efisien array yang tumbuh secara dinamis. Penyisipan di awal dalam O (n), penyisipan di akhir diamortisasi O (1), akses acak O (1).
sumber
slice!()
tidak mengubah larik pada tempatnya, melainkan, "Menghapus elemen yang diberikan oleh indeks (opsional hingga elemen panjang) atau rentang." per ruby-doc.org/core-2.2.3/Array.html#method-i-slice-21cara lain adalah dengan menggunakan metode jangkauan
sumber
Ruby 2.6 Rentang Tanpa Awal / Tanpa Akhir
sumber
Saya suka rentang untuk ini:
Namun, berhati-hatilah dengan apakah titik akhir termasuk dalam rentang Anda. Ini menjadi kritis pada daftar panjang yang aneh di mana Anda harus memilih di mana Anda akan mematahkan bagian tengah. Jika tidak, Anda akan menghitung dua kali elemen tengah.
Contoh di atas akan secara konsisten menempatkan elemen tengah di paruh terakhir.
sumber
(list.length / 2.0).ceil
untuk menempatkan elemen tengah secara konsisten di paruh pertama jika Anda membutuhkannya.