Apa itu mengiris dan mengiris dengan python?

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

Apa itu mengiris dan mengiris dengan python?

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 kedua
indices = my_slice.indices(len(sequence))
0 (genap) atau
indices = my_slice.indices(len(sequence))
1 (ganjil)Setiap elemen kecuali elemen pertama
indices = my_slice.indices(len(sequence))
2Setiap elemen kecuali elemen terakhir
indices = my_slice.indices(len(sequence))
3Setiap elemen kecuali elemen pertama dan terakhir
indices = my_slice.indices(len(sequence))
4Setiap elemen dalam urutan terbalik________45

Tugas

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+step
5 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+step
7. 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+step
9, yang sudah kami diskusikan. Ini memberi kita hasil yang kita inginkan

Apa itu pemotongan dengan Python?

Python slice() Fungsi . Anda dapat menentukan di mana memulai pemotongan, dan di mana harus mengakhiri. Anda juga dapat menentukan langkahnya, yang memungkinkan Anda untuk e. g. iris hanya setiap item lainnya. A slice object is used to specify how to slice a sequence. You can specify where to start the slicing, and where to end. You can also specify the step, which allows you to e.g. slice only every other item.

Bagaimana konsep pemotongan?

Definisi mengiris. tindakan memotong menjadi irisan . jenis. potong, potong. tindakan memotong sesuatu menjadi beberapa bagian.

Apa itu mengiris dengan contoh?

Fungsi pertama mengambil satu argumen sedangkan fungsi kedua mengambil tiga argumen dan mengembalikan objek slice. objek slice ini dapat digunakan untuk mendapatkan subbagian dari koleksi . Misalnya, jika kita ingin mendapatkan dua elemen pertama dari sepuluh elemen? .

Apa itu slicing dan dicing dengan Python?

Memilih nilai tunggal dari daftar hanyalah salah satu bagian dari cerita. Dimungkinkan juga untuk mengiris daftar Anda, yang berarti memilih beberapa elemen dari daftar Anda . Gunakan sintaks berikut. my_list[mulai. akhir] Indeks awal akan disertakan, sedangkan indeks akhir tidak.