Metode slice()_ mengembalikan sebagian dari iterable sebagai objek dari kelas mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) 0 berdasarkan rentang yang ditentukan. Ini dapat digunakan dengan objek string, daftar, tupel, set, byte, atau rentang atau objek kelas khusus yang mengimplementasikan metode urutan mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) 1 dan mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) 2 metode
Sintaksis
slice(stop) slice(start, stop, step)Parameter
- Mulailah. (Opsional) Memulai indeks tempat pemotongan iterable dimulai. Nilai default tidak ada
- berhenti. Mengakhiri indeks tempat pengirisan harus diakhiri
- melangkah. (Opsional) Bilangan bulat untuk menaikkan indeks awal. Default ke Tidak Ada
Nilai Pengembalian
Mengembalikan objek dari kelas mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) 0
Contoh berikut menunjukkan metode slice() dengan nilai string
Contoh. slice() dengan String
Salinanmystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2])
Keluaran
slice: slice(None, 9, None) String value: Tutorials List value: [1,2,3,4,5,6,7,8,9] slice: slice(2, 8, 2) String value: tra List value: [3, 5, 7] _
Di atas, mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) _5 mengembalikan objek irisan sebagai mystr = 'TutorialsTeacher' nums = [1,2,3,4,5,6,7,8,9,10] portion1 = slice(9) portion2 = slice(2, 8, 2) print('slice: ', portion1) print('String value: ', mystr[portion1]) print('List value: ', nums[portion1]) print('slice: ', portion2) print('String value: ', mystr[portion2]) print('List value: ', nums[portion2]) 6, yang dapat Anda berikan ke objek iterable apa pun untuk mendapatkan bagian indeks itu
Metode slice()_ dapat digunakan dengan string, list, tuple, set, byte, atau range. Contoh berikut mengambil bagian dari objek daftar
kembalikan [(nama, alamat) untuk nama, alamat sendiri. alamat jika ada (nama. atas(). dimulai dengan(huruf) untuk huruf demi huruf)]
def __getitem__(diri, kunci)
mengembalikan diri. get_addresses_by_first_letters(kunci)
if isinstance(kunci, iris)
mulai, berhenti, langkah = kunci. mulai, kunci. berhenti, kunci. melangkah
huruf = (string. ascii_huruf besar[string. ascii_uppercase. indeks(mulai). rangkaian. ascii_uppercase. indeks(berhenti)+1. melangkah])
mengembalikan diri. get_addresses_by_first_letters(huruf)
address_book = AddressBook()
buku alamat. add_address("Sherlock Holmes", "221B Baker St. , London")
buku alamat. add_address("Wallace dan Gromit", "62 West Wallaby Street, Wigan, Lancashire")
buku alamat. add_address("Peter Wimsey", "110a Piccadilly, London")
buku alamat. add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois")
buku alamat. add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, Inggris")
buku alamat. add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Samudera Pasifik")
buku alamat. add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1")
Jawaban di atas tidak membahas penugasan slice. Untuk memahami penugasan irisan, ada gunanya menambahkan konsep lain ke seni ASCII
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ Slice position: 0 1 2 3 4 5 6 Index position: 0 1 2 3 4 5 >>> p = ['P','y','t','h','o','n'] # Why the two sets of numbers: # indexing gives items, not lists >>> p[0] 'P' >>> p[5] 'n' # Slicing gives lists >>> p[0:1] ['P'] >>> p[0:2] ['P','y'] _Satu heuristik adalah, untuk potongan dari nol hingga n, pikirkan. "nol adalah awal, mulai dari awal dan ambil n item dalam daftar"
>>> p[5] # the last of six items, indexed from zero 'n' >>> p[0:5] # does NOT include the last item! ['P','y','t','h','o'] >>> p[0:6] # not p[0:5]!!! ['P','y','t','h','o','n']Heuristik lainnya adalah, "untuk irisan apa pun, ganti awal dengan nol, terapkan heuristik sebelumnya untuk mendapatkan akhir daftar, lalu hitung kembali angka pertama untuk memotong item dari awal"
>>> p[0:4] # Start at the beginning and count out 4 items ['P','y','t','h'] >>> p[1:4] # Take one item off the front ['y','t','h'] >>> p[2:4] # Take two items off the front ['t','h'] # etc.Aturan pertama penugasan slice adalah karena slicing mengembalikan daftar, penugasan slice memerlukan daftar (atau iterable lainnya)
>>> p[2:3] ['t'] >>> p[2:3] = ['T'] >>> p ['P','y','T','h','o','n'] >>> p[2:3] = 't' Traceback (most recent call last): File "", line 1, in TypeError: can only assign an iterableAturan kedua penetapan irisan, yang juga dapat Anda lihat di atas, adalah bahwa bagian apa pun dari daftar yang dikembalikan oleh pengindeksan irisan, itu adalah bagian yang sama yang diubah oleh penetapan irisan
Aturan ketiga penugasan slice adalah, daftar yang ditugaskan (iterable) tidak harus memiliki panjang yang sama;
>>> p = ['P','y','t','h','o','n'] # Start over >>> p[2:4] = ['s','p','a','m'] >>> p ['P','y','s','p','a','m','o','n']Bagian tersulit untuk membiasakan diri adalah penugasan ke irisan kosong. Dengan menggunakan heuristik 1 dan 2, mudah bagi Anda untuk mengindeks irisan kosong
>>> p = ['P','y','t','h','o','n'] >>> p[0:4] ['P','y','t','h'] >>> p[1:4] ['y','t','h'] >>> p[2:4] ['t','h'] >>> p[3:4] ['h'] >>> p[4:4] []Dan setelah Anda melihatnya, penugasan irisan ke irisan kosong juga masuk akal
>>> p = ['P','y','t','h','o','n'] >>> p[2:4] = ['x','y'] # Assigned list is same length as slice >>> p ['P','y','x','y','o','n'] # Result is same length >>> p = ['P','y','t','h','o','n'] >>> p[3:4] = ['x','y'] # Assigned list is longer than slice >>> p ['P','y','t','x','y','o','n'] # The result is longer >>> p = ['P','y','t','h','o','n'] >>> p[4:4] = ['x','y'] >>> p ['P','y','t','h','x','y','o','n'] # The result is longer stillPerhatikan bahwa, karena kita tidak mengubah angka kedua dari potongan (4), item yang disisipkan selalu bertumpuk di atas 'o', bahkan saat kita menugaskan ke potongan kosong. Jadi posisi untuk penugasan irisan kosong adalah perluasan logis dari posisi penugasan irisan tidak kosong
Mencadangkan sedikit, apa yang terjadi jika Anda terus melanjutkan prosesi penghitungan awal potongan kami?
>>> p = ['P','y','t','h','o','n'] >>> p[0:4] ['P','y','t','h'] >>> p[1:4] ['y','t','h'] >>> p[2:4] ['t','h'] >>> p[3:4] ['h'] >>> p[4:4] [] >>> p[5:4] [] >>> p[6:4] []Dengan mengiris, setelah selesai, selesai; . Di Python Anda tidak mendapatkan langkah negatif kecuali Anda secara eksplisit memintanya dengan menggunakan angka negatif
>>> p[5:3:-1] ['n','o']Ada beberapa konsekuensi aneh pada aturan "setelah Anda selesai, Anda selesai".
>>> p[5] # the last of six items, indexed from zero 'n' >>> p[0:5] # does NOT include the last item! ['P','y','t','h','o'] >>> p[0:6] # not p[0:5]!!! ['P','y','t','h','o','n'] _0Faktanya, dibandingkan dengan pengindeksan, pemotongan Python sangat anti-kesalahan
>>> p[5] # the last of six items, indexed from zero 'n' >>> p[0:5] # does NOT include the last item! ['P','y','t','h','o'] >>> p[0:6] # not p[0:5]!!! ['P','y','t','h','o','n'] _1Ini terkadang berguna, tetapi juga dapat menyebabkan perilaku yang agak aneh
>>> p[5] # the last of six items, indexed from zero 'n' >>> p[0:5] # does NOT include the last item! ['P','y','t','h','o'] >>> p[0:6] # not p[0:5]!!! ['P','y','t','h','o','n'] _2Bergantung pada aplikasi Anda, itu mungkin. atau mungkin tidak. menjadi apa yang Anda harapkan di sana
Di bawah ini adalah teks jawaban asli saya. Ini bermanfaat bagi banyak orang, jadi saya tidak ingin menghapusnya