Berbagi teknologi

Bab 6 Objek String dan Operasi Pengirisan

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Daftar isi

Bab 6 Objek String dan Operasi Pengirisan

6.1 Objek string

6.2 Metode yang umum digunakan dalam karakter

6.3 Operasi pemotongan

Bab 6 Objek String dan Operasi Pengirisan

6.1 Objek string

String: Sebuah string yang terdiri dari beberapa karakter

Karakter: simbol yang terlihat dengan mata telanjang

Byte: tidak terlihat dengan mata telanjang

Bagaimana python mendefinisikan string:

tanda kutip tunggal tanda kutip ganda tanda kutip tiga str()

6.2 Metode yang umum digunakan dalam karakter

 >>> dir(s)
 ['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

huruf kapital ------- Buat huruf pertama pada string menjadi huruf besar

 >>> s
 'this is a string'
 >>> s.capitalize()
 'This is a string'

center(width, fillchar=' ') ------ Pusatkan string sesuai dengan panjang yang diberikan dan sejajarkan di tengah

hanya --------- rata kanan

lhanya ------ rata kiri

 >>> help(s.center)
 Help on built-in function center:
 ​
 center(width, fillchar=' ', /) method of builtins.str instance
     Return a centered string of length width.
 ​
     Padding is done using the specified fill character (default is a space).
 ​
 >>> s.center(40)
 '            this is a string            '
 >>> s.center(40,"*")
 '************this is a string************'
 >>> s.rjust(40)
 '                        this is a string'
 >>> s.ljust(40)
 'this is a string                        '
 >>> s.ljust(40,"*")
 'this is a string************************'
 >>> s.rjust(40,"*")
 '************************this is a string'

count --------- menghitung berapa kali karakter muncul dalam sebuah string

 >>> s
 'this is a string'
 >>> s.count("s")
 3
 >>> s.count("is")
 2

diakhiri dengan ------- Tentukan apakah string diakhiri dengan XXX

dimulai dengan ------- Tentukan apakah string dimulai dengan XXX

 >>> s.endswith("g")
 True
 >>> s.endswith("ing")
 True
 >>> s.endswith("f")
 False
 >>> s.startswith("t")
 True
 >>> s.startswith("f")
 False

indeks ------ Posisi di mana karakter atau string yang dicari pertama kali muncul dalam string. Jika tidak ada, pengecualian (laporan kesalahan) akan dilempar.

rindex ------- Pencarian dari kanan ke kiri, posisi dimana karakter atau string yang dicari pertama kali muncul dalam string (setara dengan kemunculan terakhir karakter atau string yang dicari dari kiri ke kanan dalam string) lokasi ), jika tidak ada, berikan pengecualian (laporkan kesalahan)

 >>> s
 'this is a string'
 >>> s.index("s")
 3
 >>> s.index("is")
 2
 >>> s.index("f")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: substring not found
 >>> s.index(" ")
 4
 >>> s.rindex("s")
 10
 >>> s.rindex("f")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: substring not found

find ------- Posisi di mana karakter atau string yang dicari pertama kali muncul di string. Jika tidak ada, -1 dikembalikan.

rfind----- Pencarian dari kanan ke kiri, posisi kemunculan pertama karakter atau string dalam string (setara dengan posisi kemunculan terakhir karakter atau string dalam string dari kiri ke kanan) ), mengembalikan -1 jika tidak ada

 >>> s
 'this is a string'
 >>> s.find("s")
 3
 >>> s.find("f")
 -1
 >>> s.rfind("f")
 -1
 >>> s.rfind("s")
 10

encode ----- metode untuk mengonversi string menjadi byte di python3, metode decode() untuk mengonversi byte menjadi string (metode dalam byte)

 >>> s
 'this is a string'
 >>> s.encode()
 b'this is a string'
 >>> d = s.encode()
 >>> d
 b'this is a string'
 >>> type(d)
 <class 'bytes'>
 >>> d
 b'this is a string'
 >>> d.decode()
 'this is a string'
 >>> ss = d.decode()
 >>> ss
 'this is a string'
 >>> type(ss)
 <class 'str'>

format ------ format string, string gabungan

isupper ------ Menentukan apakah string semuanya huruf besar

islower ----- ------ Tentukan apakah stringnya semuanya huruf kecil

>>> s.isupper()
False
>>> s.islower()
False

istitle ----- Tentukan apakah itu sebuah judul

>>> s.istitle()
False
>>> ss = "This Is A Dog"
>>> ss.istitle()
True

isspace ----- Ini tidak umum digunakan untuk menentukan apakah suatu spasi.

>>> sss = "       "
>>> sss.isspace()
True
>>> ss
'This Is A Dog'
>>> ss.isspace()
False

isdigit ------ Tentukan apakah itu angka

>>> sss = "123234344"
>>> sss.isdigit()
True
>>> ss
'This Is A Dog'
>>> ss.isdigit()
False
>>> sss = "1233443gggg"
>>> sss.isdigit()
False

isalnum ------ menentukan apakah itu huruf dan angka (alfa-numerik)

>>> help(s.isalnum)
Help on built-in function isalnum:

isalnum() method of builtins.str instance
    Return True if the string is an alpha-numeric string, False otherwise.

    A string is alpha-numeric if all characters in the string are alpha-numeric and
    there is at least one character in the string.

>>> sss
'1233443gggg'
>>> sss.isalnum()
True
>>> ss
'This Is A Dog'
>>> ss.isalnum()
False

isalpha ------ menentukan apakah itu surat

judul ----- Ubah string menjadi format judul

>>> s
'This is a string'
>>> s.istitle()
False
>>> s.title()
'This Is A String'
>>> sss = s.title()
>>> sss
'This Is A String'
>>> sss.istitle()
True

atas ------- Ubah string menjadi huruf besar

lebih rendah ------- Ubah string menjadi huruf kecil

>>> s
'This is a string'
>>> s.lower()
'this is a string'
>>> s.upper()
'THIS IS A STRING'

split ----- Pisahkan string sesuai dengan simbol yang ditentukan, dan nilai yang dikembalikan adalah daftar

>>> s
'This is a string'
>>> s.split(" ")
['This', 'is', 'a', 'string']
>>> l = s.split(" ")
>>> l
['This', 'is', 'a', 'string']
>>> type(l)
<class 'list'>
>>> l = s.split("s")
>>> l
['Thi', ' i', ' a ', 'tring']

join ------ menggabungkan objek yang dapat diubah menjadi string sesuai dengan format yang ditentukan

>>> ls = ["A","B","c","d"]
>>> type(ls)
<class 'list'>
>>> ss = " ".join(ls)
>>> ss
'A B c d'
>>> type(ss)
<class 'str'>
>>> ss = "*".join(ls)
>>> ss
'A*B*c*d'

strip ------- hapus spasi di kedua sisi

rstrip------ kosongkan spasi di sebelah kanan

lstrip -------- kosongkan spasi di kiri

>>> ss = "                              hhhhhhh                                  "
>>> ss
'                              hhhhhhh                                  '
>>> ss.strip()
'hhhhhhh'
>>> ss.strip()
'hhhhhhh'
>>> ss
'                              hhhhhhh                                  '
>>> ss.rstrip()
'                              hhhhhhh'
>>> ss.lstrip()
'hhhhhhh                                  '

ganti ("karakter asli", "karakter baru") ------ Ganti karakter yang sesuai

>>> s
'This is a string'
>>> s.replace("s","t")
'Thit it a ttring'

6.3 Operasi pemotongan

Slice: digunakan untuk memisahkan objek yang dapat diubah (wadah)

Peraturan tata bahasa:

object[start_index:end_index:step]

start_index ------- Indeks awal (posisi awal)

end_index ------ Indeks akhir (posisi akhir), tidak menyertakan nilai di end_index

langkah ---- ukuran langkah, bisa berupa bilangan positif atau bilangan negatif, bilangan positif (dari kiri ke kanan) bilangan negatif (dari kanan ke kiri), nilai defaultnya adalah 1

object[:]  ----- 切割的是一个完整的对象
object[start_index:]  ------ 从start_index开始切割到最后的位置,步长为1
object[:end_index] ------ 从最开始的位置切割到end_index处,但是不包含end_index
object[start_index:end_index] ------- 从start_index开始切割到end_index处,但是不包含end_index,步长为1
object[start_index:end_index:step] ------------ 从start_index开始切割到end_index处,但是不包含end_index,步长为step  

Interval antara penutupan depan dan pembukaan belakang

ls = [0,1,2,3,4,5,6,7,8,9]

1. Potong satu nilai

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[0]
0
>>> ls[-4]
6

2. Potong seluruh objeknya

>>> ls[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[::]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[::-1]  #-1 表示从右往左切割 所以是倒序
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3. start_index dan end_index keduanya bilangan positif

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[1:6]
[1, 2, 3, 4, 5]
>>> ls[1:6:-1]  # start_index=1 end_index = 6表示的是从1切割到6的位置,但是不包含6处的值,从左往右切割,step=-1 表示从右往左   
[]
>>> ls[6:1]
[]
>>> ls[6:1:-1]
[6, 5, 4, 3, 2]
>>> ls[:6]
[0, 1, 2, 3, 4, 5]
>>> ls[:6:-1]
[9, 8, 7]
>>> ls[6:]
[6, 7, 8, 9]
>>> ls[6::-1]
[6, 5, 4, 3, 2, 1, 0]
>>>

4. start_index dan end_index keduanya merupakan angka negatif

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[-1:-6]
[]
>>> ls[-1:-6:-1]
[9, 8, 7, 6, 5]
>>> ls[-6:-1]
[4, 5, 6, 7, 8]
>>> ls[:-6]
[0, 1, 2, 3]
>>> ls[:-6:-1]
[9, 8, 7, 6, 5]
>>> ls[-6:]
[4, 5, 6, 7, 8, 9]
>>> ls[-6::-1]
[4, 3, 2, 1, 0]

5. Start_index dan end_index digabungkan dengan positif dan negatif

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[1:-6]
[1, 2, 3]
>>> ls[1:-6:-1]
[]
>>> ls[-1:6]
[]
>>> ls[-1:6:-1]
[9, 8, 7]

6. Pengirisan terus menerus

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[:8][2:5][-1:]
[4]
ls[:8] ----- [0,1,2,3,4,5,6,7]
ls[:8][2:5]   -----   [2,3,4]
ls[:8][2:5][-1:] ----- [4]

7. Tiga parameter pemotongan juga dapat berupa ekspresi

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[2+1:3*2:7%3]
[3, 4, 5]
>>> ls[3:6:1]
[3, 4, 5]
>>> ls[2:6:2]
[2, 4]

8. Mengiris juga dapat memotong benda lain

>>> (1,2,3,4,5,6,7,8,9)[:3]
(1, 2, 3)
>>> "ABCDEFGHIJK"[::2]
'ACEGIK'
>>> for i in range(1,100)[2::3][-10:]:
...     print(i)
...
72
75
78
81
84
87
90
93
96
99

Pertanyaan wawancara:

1. Jika rentang subskrip terlampaui saat menggunakan irisan untuk memotong data, apakah kesalahan akan dilaporkan?

Tidak ada kesalahan yang akan dilaporkan. Jika melebihi rentang, objek lengkap akan dikembalikan.

2. Bagaimana cara membalikkan keluaran daftar dengan python?

putaran terbalik

[::-1]

daftar.terbalik()