Dalam Python, beberapa objek seperti my_list = list("Python") print(my_list[0:-1])_0s atau my_list = list("Python") print(my_list[0:-1])1s dapat diiris. Misalnya, Anda bisa mendapatkan elemen pertama dari daftar atau string
Python menggunakan tanda kurung siku (my_list = list("Python") print(my_list[0:-1])2 dan my_list = list("Python") print(my_list[0:-1])3) untuk mengakses elemen tunggal objek yang dapat didekomposisi menjadi beberapa bagian
Namun, ada lebih banyak hal di dalam tanda kurung siku ini daripada sekadar mengakses elemen individual
Pengindeksan Negatif
Mungkin Anda sudah tahu bahwa Anda bisa menggunakan indeks negatif di Python seperti itu
my_list = list("Python") print(my_list[-1])_
Sesuatu seperti my_list = list("Python") print(my_list[0:-1])4 mewakili elemen terakhir dari daftar, my_list = list("Python") print(my_list[0:-1])5 mewakili elemen terakhir kedua dan seterusnya
Colon
Bagaimana jika Anda ingin mengambil lebih dari satu elemen dari daftar? . Dengan Python, tidak masalah
my_list = list("Python") print(my_list[0:-1])
Atau, bagaimana jika Anda menginginkan setiap elemen genap dari daftar Anda, mis. e. elemen my_list = list("Python") print(my_list[0:-1])6, my_list = list("Python") print(my_list[0:-1])7, dll. ? . Kita bisa menulis bahwa sebagai
Objek my_list = list("Python") print(my_list[0:-1])8
Di belakang layar, indeks yang kami gunakan untuk mengakses item individual dari objek mirip my_list = list("Python") print(my_list[0:-1])1 terdiri dari tiga nilai. print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])0. Objek ini disebut objek irisan dan dapat dibuat secara manual dengan fungsi my_list = list("Python") print(my_list[0:-1])8 bawaan
Kita bisa mengecek apakah keduanya memang sama
Coba lihat grafik di atas. Huruf print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])_2 adalah elemen pertama dalam daftar kami, sehingga dapat diindeks oleh my_list = list("Python") print(my_list[0:-1])6 (lihat angka di kotak hijau). Daftar memiliki panjang print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])_4, dan oleh karena itu, elemen pertama dapat diindeks oleh print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])5 (pengindeksan negatif ditampilkan di kotak biru)
Angka-angka dalam kotak hijau dan biru mengidentifikasi satu elemen dari daftar. Sekarang, lihat angka di kotak oranye. Ini menentukan indeks irisan dari daftar. Jika kita menggunakan potongan print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])_6 dan print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])7, setiap elemen di antara angka-angka ini ditutupi oleh potongan. Beberapa contoh
Itu hanya cara mudah untuk mengingat bahwa nilai print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])6 bersifat inklusif dan nilai print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])9 bersifat eksklusif
Default waras
Sebagian besar waktu, Anda ingin my_list = list("Python") print(my_list[0:-1])8 my_list = list("Python") print(my_list[0:-1])1 Anda dengan
- mulai dari my_list = list("Python") print(my_list[0:-1])_6
- berhenti di akhir
- melangkah dengan lebar my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)3
Oleh karena itu, ini adalah nilai default dan dapat dihilangkan dalam sintaks my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)4 kami
print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])
Secara teknis, setiap kali kita menghilangkan angka di antara titik dua, angka yang dihilangkan akan memiliki nilai my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)5
Dan pada gilirannya, objek slice akan menggantikan my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)5 dengan
- my_list = list("Python") print(my_list[0:-1])6 untuk nilai awal
- my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)_8 untuk nilai berhenti
- my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)_3 untuk nilai langkah
Namun, jika nilai print(id(my_list)) print(id(my_list_2))_0 negatif, my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)5 diganti dengan
- print(id(my_list)) print(id(my_list_2))_2 untuk nilai awal
- print(id(my_list)) print(id(my_list_2))_3 untuk nilai berhenti
Misalnya, print(id(my_list)) print(id(my_list_2))_4 secara teknis sama dengan print(id(my_list)) print(id(my_list_2))5
Kasus spesial. Menyalin
Ada kasus khusus untuk mengiris yang terkadang bisa digunakan sebagai jalan pintas
Jika Anda hanya menggunakan nilai default, mis. e. print(id(my_list)) print(id(my_list_2))6 itu akan memberi Anda item yang sama persis
my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)
Unsur-unsur dalam daftar memang sama. Namun, objek daftar tidak. Kami dapat memeriksanya dengan menggunakan print(id(my_list)) print(id(my_list_2))7 bawaan
print(id(my_list)) print(id(my_list_2))
Perhatikan bahwa setiap operasi irisan mengembalikan objek baru. Salinan urutan kami dibuat saat menggunakan hanya print(id(my_list)) print(id(my_list_2))8
Berikut adalah dua cuplikan kode untuk mengilustrasikan perbedaannya
Contoh
Beberapa contoh yang sering digunakan
Gunakan casePython CodeSetiap elementanpa irisan, atau print(id(my_list)) print(id(my_list_2))8 untuk salinanSetiap elemen keduaindices = my_slice.indices(len(sequence))0 (genap) atau indices = my_slice.indices(len(sequence))1 (ganjil)Setiap elemen kecuali elemen pertamaindices = my_slice.indices(len(sequence))2Setiap elemen kecuali elemen terakhirindices = my_slice.indices(len(sequence))3Setiap elemen kecuali elemen pertama dan terakhirindices = my_slice.indices(len(sequence))4Setiap elemen dalam urutan terbalik________45Tugas
Memahami lingkaran
Setiap objek my_list = list("Python") print(my_list[0:-1])8 di Python memiliki metode indices = my_slice.indices(len(sequence))9. Metode ini akan mengembalikan sepasang (print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])_6, print(my_list[0:-1] == my_list[:-1]) print(my_list[0:len(my_list):2] == my_list[::2])9, print(id(my_list)) print(id(my_list_2))0) yang dengannya Anda dapat membangun kembali loop yang setara dengan operasi pemotongan. Kedengarannya rumit?
Mari kita mulai dengan urutan
Kemudian, kami membuat objek irisan. Mari kita ambil setiap elemen kedua, i. e. indices = my_slice.indices(len(sequence))0
Karena kita menggunakan my_list = list("Python") my_list_2 = my_list[:] print(my_list==my_list_2)_5s, objek irisan perlu menghitung nilai sequence = list("Python") start = 0 stop = 6 step = 2 i = start while i != stop: print(sequence[i]) i = i+step5 aktual berdasarkan panjang urutan kita. Oleh karena itu, untuk mendapatkan triple indeks Anda, kita perlu meneruskan panjangnya ke metode ________ 45 ______ 9, seperti itu
indices = my_slice.indices(len(sequence))
Ini akan memberi kita triple sequence = list("Python") start = 0 stop = 6 step = 2 i = start while i != stop: print(sequence[i]) i = i+step7. Kami sekarang dapat membuat ulang loop seperti itu
sequence = list("Python") start = 0 stop = 6 step = 2 i = start while i != stop: print(sequence[i]) i = i+step
Ini mengakses elemen yang sama dari daftar kami seperti my_list = list("Python") print(my_list[0:-1])8 itu sendiri
Membuat Kelas Sendiri Sliceable
Python tidak akan menjadi Python jika Anda tidak dapat menggunakan objek irisan di kelas Anda sendiri. Lebih baik lagi, irisan tidak perlu berupa nilai numerik. Kita bisa membuat buku alamat yang dapat diiris berdasarkan indeks abjad
import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])
Penjelasan
Metode sequence = list("Python") start = 0 stop = 6 step = 2 i = start while i != stop: print(sequence[i]) i = i+step_9
def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]
Metode ini memfilter semua alamat milik import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])0 dimulai dengan huruf apa saja dalam argumen import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])1. Pertama, kita membuat fungsi tidak peka huruf besar/kecil dengan mengonversi import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])1 menjadi huruf besar. Kemudian, kami menggunakan daftar import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])3 internal kami. Kondisi di dalam tes pemahaman daftar jika salah satu huruf yang disediakan cocok dengan huruf pertama dari nilai import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])0 yang sesuai
Metode import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])5
Untuk membuat objek import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])_6 kita dapat diiris, kita perlu menimpa metode garis bawah ganda ajaib Python import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])5
def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters)
Pada awalnya, kami memeriksa apakah kunci kami adalah my_list = list("Python") print(my_list[0:-1])0. Ini akan terjadi jika kita mengakses objek kita dengan satu huruf dalam tanda kurung siku seperti itu. import string class AddressBook: def __init__(self): self.addresses = [] def add_address(self, name, address): self.addresses.append((name, address)) def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)] def __getitem__(self, key): if isinstance(key, str): return self.get_addresses_by_first_letters(key) if isinstance(key, slice): start, stop, step = key.start, key.stop, key.step letters = (string.ascii_uppercase[string.ascii_uppercase.index(start):string.ascii_uppercase.index(stop)+1:step]) return self.get_addresses_by_first_letters(letters) address_book = AddressBook() address_book.add_address("Sherlock Holmes", "221B Baker St., London") address_book.add_address("Wallace and Gromit", "62 West Wallaby Street, Wigan, Lancashire") address_book.add_address("Peter Wimsey", "110a Piccadilly, London") address_book.add_address("Al Bundy", "9764 Jeopardy Lane, Chicago, Illinois") address_book.add_address("John Dolittle", "Oxenthorpe Road, Puddleby-on-the-Marsh, Slopshire, England") address_book.add_address("Spongebob Squarepants", "124 Conch Street, Bikini Bottom, Pacific Ocean") address_book.add_address("Hercule Poirot", "Apt. 56B, Whitehaven Mansions, Sandhurst Square, London W1") address_book.add_address("Bart Simpson", "742 Evergreen Terrace, Springfield, USA") print(string.ascii_uppercase) print(string.ascii_uppercase.index("A")) print(string.ascii_uppercase.index("Z")) print(address_book["A"]) print(address_book["B"]) print(address_book["S"]) print(address_book["A":"H"])_9. Kami hanya dapat mengembalikan alamat yang namanya dimulai dengan huruf yang diberikan untuk kasus sepele ini
Bagian yang menarik adalah ketika def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]_0 adalah objek my_list = list("Python") print(my_list[0:-1])8. Misalnya, akses seperti def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]2 akan cocok dengan kondisi tersebut. Pertama, kami mengidentifikasi semua huruf menurut abjad antara def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]3 dan def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]4. Modul def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]_5 di Python mencantumkan semua huruf (latin) di dalam def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]6. Kami menggunakan my_list = list("Python") print(my_list[0:-1])_8 untuk mengekstrak huruf di antara huruf-huruf yang diberikan. Perhatikan def get_addresses_by_first_letters(self, letters): letters = letters.upper() return [(name, address) for name, address in self.addresses if any(name.upper().startswith(letter) for letter in letters)]_8 di parameter irisan kedua. Dengan cara ini, kami memastikan bahwa huruf terakhir bersifat inklusif, bukan eksklusif
Setelah kami menentukan semua huruf dalam urutan kami, kami menggunakan sequence = list("Python") start = 0 stop = 6 step = 2 i = start while i != stop: print(sequence[i]) i = i+step9, yang sudah kami diskusikan. Ini memberi kita hasil yang kita inginkan