String slicing Python (tiếp tục)

String slicing Python (tiếp tục)

Slicing là một đặc tính Python cái cho phép chúng ta tham chiếu đến một string phụ của
một string. (Thực tế, nó làm việc trên bất cứ chuỗi nào, như chúng ta sẽ thấy trong các
học phần sau). Nó lấy 2 chỉ mục: chỉ mục nơi chúng ta muốn bắt đầu, và chỉ mục sang phải
của nơi chúng ta muốn kết thúc. Nếu chúng ta sử dụng các chỉ mục 4 và 8, ví dụ, thì chúng
ta lấy các kí tự tại các chỉ mục 4,5,6 và 7. Slicing sử dụng [ ], với một dấu : giữa 2
chỉ mục:

>>> s = ‘abcdefghijk’
>>> s[4:8]
‘efgh’

Slicing không thay đổi cái s tham chiếu đến. Chúng ta có thể làm s tham chiếu đến khúc bằng
cách sử dụng một phát biểu gán:

>>> s
‘abcdefghijk’
>>> s = s[4:8]
>>> s
‘efgh’

Nó là dễ để mắc lỗi ở đây và nghĩ rằng s[4:8] bao gồm kí tự tại chỉ mục 8. Nhưng nó không bao gồm, giống như
range (4:8) không bao gồm 8. Nên trong khi hành vi này có thể một chút phản trực giác, nó được áp dụng ổn định
trong cả range và slicing.
Chúng ta phải luôn bao gồm dấu : khi thực hiện string slicing, nhưng chỉ mục bắt đầu và kết thúc là tuỳ chọn. Nếu
chúng ta bỏ đi start index, Python bắt đầu slicing tại index 0:

>>> s = ‘abcdefghijk’
>>> s[:4]
‘abcd’

Nếu chúng ta bỏ đi end index, Python slices cho đến cuối chuỗi kí tự:

>>> s[4:]
‘efghijk’

Và bỏ cả hai chỉ mục? Cái đó cung cấp cho chúng ta một slice chứa toàn bộ chuỗi kí tự:

>>> s[:]
‘abcdefghijk’

Chúng ta thậm chí có thể sử dụng các chỉ mục âm trong một slice. Sau đây là một ví dụ:

>>> s[-4:]
‘hijk’

Chỉ mục bắt đầu tham chiếu đến kí tự thứ tư từ bên phải sang, cái là ‘h’, và end index bị bỏ đi. Chúng ta
vì vậy nhận một slice từ ‘h’ tới cuối kí tự.
Không giống chỉ mục hoá, slicing không bao giờ sinh ra lỗi chỉ mục. Nếu chúng ta sử dụng các chỉ
mục cái bên ngoài string, Python slices tới cuối string phù hợp:

>>> s[8:20]
‘ijk’
>>> s[-50:2]
‘ab’

Chúng ta sẽ sử dụng string slicing để thực thi các hành vi của nút 1,2 và 3. Sau đây là code trông như thế nào cho nút 1:

>>> songs = ‘ABCDE’
>>> songs = songs[1:] + songs[0]
>>> songs
‘BCDEA’

Slice cung cấp cho chúng ta toàn bộ chuỗi kí tự ngoại trừ cho kí tự tại index 0. (Không có gì tuỳ theo một
string có độ dài 5 ở đây; code này sẽ làm việc trên một string không rỗng có bất cứ độ dài nào).Gắn kí tự bị bỏ dẫn đến kết
quả song đầu tiên di chuyển tới cuối playlist. Slicing cho nút khác là tương tự, bạn sẽ thấy code đó tiếp theo đây.
CONCEPT CHECK
Đầu ra của code sau là gì?
game = ‘Lost Vikings’
print(game[2:-6])
A. st V
B. ost V
C. iking
D. st Vi
E. Viking
Trả lời: A. Ký tự ở chỉ mục 2 là chữ “s” trong “Lost”. Ký tự ở chỉ mục
-6 là chữ ‘i’ đầu tiên trong ‘Vikings’. Vì chúng ta đi từ chỉ số 2 trở lên
nhưng không bao gồm chỉ số -6, chúng ta nhận được slice ‘st V’.
CONCEPT CHECK
Password nào đưa chúng ta ra khỏi loop sau?
valid = False
while not valid:
s = input()
valid = len(s) == 5 and s[:2] == ‘xy’
A. xyz
B. xyabc
C. abcxy
D. More than one of the above passwords get us out of the loop
E. None; the loop never executes and no passwords are obtained
Trả lời: B. Vòng lặp while chấm dứt khi valid là True (vì khi đó not valid
là False). Mật khẩu duy nhất trong số đó có độ dài là 5 và
hai ký tự đầu tiên của nó là ‘xy’ là xyabc. Do đó đây là mật khẩu duy nhất được cung cấp
đặt valid thành True và kết thúc vòng lặp.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *