Chỉ mục trong Python là gì?

Lập chỉ mục trong Python là gì? . Vì vậy, hãy ngồi xuống và theo dõi bài viết của chúng tôi để hiểu sâu hơn về lập chỉ mục trong Python

Điều kiện tiên quyết – Iterables là gì?

Trước khi bắt đầu lập chỉ mục, hãy hiểu iterables là gì và chức năng chính của chúng là gì. Kiến thức về iterables là rất cần thiết để hỗ trợ lập chỉ mục

Vậy iterables là gì?

Đây là một loại đối tượng đặc biệt trong Python mà bạn có thể lặp lại. Có nghĩa là bạn có thể duyệt qua tất cả các phần tử hoặc thực thể khác nhau có trong đối tượng. Nó có thể dễ dàng đạt được bằng cách sử dụng các vòng lặp

Về cơ bản, thứ mà tất cả các mục có thể lặp lại này mang theo là hai phương thức đặc biệt được gọi là __iter__() hoặc __getitem__() thực hiện Ngữ nghĩa trình tự

#Lists are iterable items in Python. 
randomItems = [4, 6, 2, 56, 23, 623, 453]

#Each individual element inside a list can be accessed using a for loop
for item sin randomItems: 
    print(item)

Ngoài Danh sách, Chuỗi và Bộ dữ liệu cũng là các lần lặp trong Python. Đây là một ví dụ về cách bạn có thể lặp qua Chuỗi

title = "Lose Yourself" 

#Looping through each character in the string
for char in title: 
    print(char)

đầu ra

L
o
s
e

Y
o
u
r
s
e
l
f

Bây giờ chúng ta đã có một số ý tưởng về Iterables trong Python. Điều đó liên quan như thế nào đến Lập chỉ mục?

Lập chỉ mục trong Python là gì?

Lập chỉ mục trong Python là một cách để chỉ các mục riêng lẻ trong một lần lặp theo vị trí của nó. Nói cách khác, bạn có thể truy cập trực tiếp vào các yếu tố lựa chọn của mình trong một lần lặp và thực hiện các thao tác khác nhau tùy thuộc vào nhu cầu của bạn

Trước khi chúng ta đi vào các ví dụ về Lập chỉ mục trong Python, có một điều quan trọng cần lưu ý

Trong Python, các đối tượng được “lập chỉ mục bằng 0” nghĩa là số lượng vị trí bắt đầu từ 0. Nhiều ngôn ngữ lập trình khác cũng theo mô hình tương tự. Trên thực tế, nhiều bạn hẳn đã quen thuộc với nó vì sự phổ biến trên internet của nó trong văn hóa meme

Vì vậy, nếu có 5 phần tử hiện diện trong một danh sách. Sau đó, phần tử đầu tiên (i. e. phần tử ngoài cùng bên trái) giữ vị trí “không”, tiếp theo là các phần tử ở vị trí thứ nhất, thứ hai, thứ ba và thứ tư

fruits = ["apple", "grape", "orange", "guava", "banana"]

#Printing out the indexes of Apples and Banana
print("Index of Apple: ", fruits.index("apple"))
print("Index of Banana: ", fruits.index("banana"))

đầu ra

Index of Apple: 0
Index of Banana: 4

Chỉ mục của một mục cụ thể trong danh sách có thể được tiết lộ khi phương thức index() được gọi trong danh sách với tên mục được truyền dưới dạng đối số

Trong phần tiếp theo, cuối cùng chúng ta cũng tìm hiểu cách sử dụng phương thức index() trên các đối tượng có thể lặp lại

Toán tử chỉ mục Python là gì?

Toán tử chỉ mục Python được biểu diễn bằng cách mở và đóng dấu ngoặc vuông. []. Tuy nhiên, cú pháp yêu cầu bạn đặt một số bên trong dấu ngoặc

Cú pháp toán tử chỉ mục Python

ObjectName[n] #Where n is just an integer number that represents the position of the element we want to access. 

Các bước để sử dụng lập chỉ mục trong Python

Dưới đây, chúng ta sẽ tìm hiểu các ví dụ về việc sử dụng chỉ mục trong Python

1. Chuỗi lập chỉ mục

greetings = "Hello, World!"

print(greetings[0]) #Prints the 0-th element in our string

print(greetings[5]) #Prints the 5-th element in our string

print(greetings[12]) #Prints the 12-th element in our string

đầu ra

H
,
!

Chúng ta có thể thấy rõ cách chức năng in của chúng ta truy cập các phần tử khác nhau trong đối tượng chuỗi của chúng ta để lấy các ký tự cụ thể mà chúng ta muốn

2. Lập chỉ mục tiêu cực trong Python

Gần đây, chúng tôi đã học cách sử dụng lập chỉ mục trong Danh sách và Chuỗi để nhận các mục cụ thể mà chúng tôi quan tâm. Mặc dù trong tất cả các trường hợp trước đây, chúng tôi đã sử dụng một số nguyên dương bên trong toán tử chỉ mục của mình (dấu ngoặc vuông), nhưng không nhất thiết phải như vậy

Thông thường, nếu chúng ta quan tâm đến một vài phần tử cuối cùng của danh sách hoặc có thể chúng ta chỉ muốn lập chỉ mục danh sách từ đầu đối diện, chúng ta có thể sử dụng số nguyên âm. Quá trình lập chỉ mục từ đầu đối diện này được gọi là Lập chỉ mục tiêu cực

Trong bài học này, bạn sẽ thấy cách truy cập các phần tử riêng lẻ và chuỗi các đối tượng trong danh sách của mình. Các phần tử danh sách có thể được truy cập bằng cách sử dụng một chỉ mục số trong ngoặc vuông

>>>

>>> mylist[m]

Đây là kỹ thuật tương tự được sử dụng để truy cập các ký tự riêng lẻ trong một chuỗi. Lập chỉ mục danh sách cũng dựa trên số không

>>>

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range

Các phần tử danh sách cũng có thể được truy cập bằng cách sử dụng chỉ mục danh sách phủ định, được tính từ cuối danh sách

>>>

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len(a)]
'spam'
>>> a[-8]
Traceback (most recent call last):
  File "", line 1, in 
    a[-8]
IndexError: list index out of range

Cắt lát là cú pháp lập chỉ mục trích xuất một phần từ danh sách. Nếu

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
9 là một danh sách, thì
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len(a)]
'spam'
>>> a[-8]
Traceback (most recent call last):
  File "", line 1, in 
    a[-8]
IndexError: list index out of range
0 trả về phần của
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
9

  • Bắt đầu với tư thế
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    2
  • Tối đa nhưng không bao gồm
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    3
  • Lập chỉ mục tiêu cực cũng có thể được sử dụng

Đây là một ví dụ

>>>

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[2:5]
['bacon', 'tomato', 'ham']
>>> a[-5:-2]
['egg', 'bacon', 'tomato']
>>> a[1:4]
['egg', 'bacon', 'tomato']
>>> a[-5:-2] == a[1:4]
True

Bỏ qua chỉ mục đầu tiên và/hoặc cuối cùng

  • Bỏ qua chỉ mục đầu tiên
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    4 bắt đầu lát cắt ở đầu danh sách
  • Việc bỏ qua chỉ mục cuối cùng
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    5 sẽ mở rộng lát cắt từ chỉ mục đầu tiên
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    2 đến cuối danh sách
  • Bỏ qua cả hai chỉ mục
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    7 trả về một bản sao của toàn bộ danh sách, nhưng không giống như một chuỗi, đó là một bản sao, không phải là một tham chiếu đến cùng một đối tượng

Đây là một ví dụ

>>>

>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[:4]
['spam', 'egg', 'bacon', 'tomato']
>>> a[0:4]
['spam', 'egg', 'bacon', 'tomato']
>>> a[2:]
['bacon', 'tomato', 'ham', 'lobster']
>>> a[2:len(a)]
['bacon', 'tomato', 'ham', 'lobster']

>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[:]
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a == a[:]
True
>>> a is a[:]
False

>>> s = 'mybacon'
>>> s[:]
'mybacon'
>>> s == s[:]
True
>>> s is s[:]
True

Một bước tiến có thể được thêm vào ký hiệu lát cắt của bạn. Sử dụng một

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len(a)]
'spam'
>>> a[-8]
Traceback (most recent call last):
  File "", line 1, in 
    a[-8]
IndexError: list index out of range
8 bổ sung và một chỉ số thứ ba chỉ định một sải chân (còn gọi là một bước) trong ký hiệu lát cắt của bạn. Sải bước có thể là tích cực hoặc tiêu cực

>>>

>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[0:6:2]
['spam', 'bacon', 'ham']
>>> a[1:6:2]
['egg', 'tomato', 'lobster']
>>> a[6:0:-2]
['lobster', 'tomato', 'egg']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a[::-1]
['lobster', 'ham', 'tomato', 'bacon', 'egg', 'spam']

JulianV trên

Đẹp

Orlando Uribe trên

Cảm ơn vì tài liệu này. Tôi đoán có một lỗi đánh máy (??) trong một trong những ví dụ được viết theo bước tiến (ví dụ video là OK)

lỗi đánh máy

>>> a[0:6:-2]
['lobster', 'tomato, 'egg']

phát biểu đúng phải là

>>> a[6:0:-2]
['lobster', 'tomato, 'egg']

nếu không thì,

>>> a[0:6:-2]
[]

Chỉ mục trong Python là gì?

Chris Bailey Nhóm RP trên

Xin chào @Orlando Uribe, Bạn nói đúng, tôi sẽ thay đổi nó để phù hợp với bài học trong video. Thanks

Ajay trên

@chris Video rất nhiều thông tin, cảm ơn vì điều này. Khi tôi đang thực hành các ví dụ, có một nghi ngờ

In [43]: a = [9, 1, 2, 4, 5, 6, 8]

In [44]: a[6:0:-2]
Out[44]: [8, 5, 2]

Với sải chân âm tại sao không bao gồm 9

Nó có loại trừ giá trị cuối cùng không?

Chỉ mục trong Python là gì?

Chris Bailey Nhóm RP trên

Xin chào @Ajay,

Cảm ơn đã xem khóa học. Lát bạn đã tạo sẽ bắt đầu ở chỉ mục 6 và kết thúc ở chỉ mục 1 và không bao gồm chỉ mục 0, đó là lý do tại sao bạn không nhận được chỉ mục 0 trên 9. Nếu bạn đã sử dụng

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
0

Điều đó sẽ bao gồm chỉ số 0. Tôi hy vọng điều này sẽ giúp giải thích những gì đang xảy ra. Dẫn lại từ văn bản dưới bài học

Cắt lát là cú pháp lập chỉ mục trích xuất một phần từ danh sách. Nếu

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
9 là một danh sách, thì
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[-1]
'lobster'
>>> a[-2]
'ham'
>>> a[-5]
'egg'
>>> a[-6]
'spam'
>>> a[-len(a)]
'spam'
>>> a[-8]
Traceback (most recent call last):
  File "", line 1, in 
    a[-8]
IndexError: list index out of range
0 trả về phần của
>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
9

  • Bắt đầu với tư thế
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    2
  • Tối đa nhưng không bao gồm
    >>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
    
    >>> a[-1]
    'lobster'
    >>> a[-2]
    'ham'
    >>> a[-5]
    'egg'
    >>> a[-6]
    'spam'
    >>> a[-len(a)]
    'spam'
    >>> a[-8]
    Traceback (most recent call last):
      File "", line 1, in 
        a[-8]
    IndexError: list index out of range
    
    3

Ajay trên

@chris cảm ơn vì đã làm rõ

kiran trên

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
1

Tại sao nó trả về chuỗi rỗng? . Bạn có thể cho tôi rõ ràng nhất về điều này?

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
2

kiran trên

Giá trị sẽ là

In [43]: a = [9, 1, 2, 4, 5, 6, 8]

In [44]: a[6:0:-2]
Out[44]: [8, 5, 2]
9

Chỉ mục trong Python là gì?

Bartosz Zaczyński Nhóm RP trên

Hãy nghĩ về các chỉ số âm như một ký hiệu tốc ký để trừ đi độ dài chuỗi đã cho

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
3

Các chỉ số tiêu cực trong ví dụ “hello world” của bạn sẽ chuyển thành điều này

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
4

Bạn đang nhận được một chuỗi trống vì chỉ số bên trái cao hơn chỉ số bên phải, trong khi bạn chưa chỉ ra thứ tự đảo ngược với đối số "bước" thứ ba. Nếu bạn đã làm, đây là bạn sẽ nhận được

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
5

Bạn có thể lấy các chỉ số kết quả được sử dụng bởi vòng lặp bên dưới như thế này

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
6

Nó trả về một bộ mà bạn có thể giải nén và chuyển đến hàm

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
00

>>> a = ['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']
>>> a
['spam', 'egg', 'bacon', 'tomato', 'ham', 'lobster']

>>> a[0]
'spam'
>>> a[2]
'bacon'
>>> a[5]
'lobster'
>>> a[len(a)-1]
'lobster'
>>> a[6]
Traceback (most recent call last):
  File "", line 1, in 
    a[6]
IndexError: list index out of range
7

Đây là các chỉ số được sử dụng bởi cú pháp dấu ngoặc vuông

kiran trên

Rực rỡ @Bartosz Zaczyński. Thanks

mo on

Tôi vui vẻ bắt đầu sử dụng bpython; . Thử tất cả mọi thứ. Và nhiều hơn nữa. ) Làm điều đó tôi gặp phải điều này

Chỉ mục trong Python với ví dụ là gì?

Phương thức index() trả về vị trí ở lần xuất hiện đầu tiên của giá trị đã chỉ định .

Là gì [

Thay vào đó, Python sử dụng các số âm để dễ dàng truy cập vào các ký tự ở cuối chuỗi. s[-1] là ký tự cuối cùng 'o' , s[-2] là 'l' ký tự tiếp theo, v.v. . Số chỉ số âm đếm ngược từ cuối chuỗi. s[-1] là 'o' -- ký tự cuối cùng (đầu tiên từ cuối)

Phương thức index() là gì?

Phương thức index() tìm lần xuất hiện đầu tiên của giá trị đã chỉ định . Phương thức index() đưa ra một ngoại lệ nếu không tìm thấy giá trị. Phương thức index() gần giống như phương thức find(), điểm khác biệt duy nhất là phương thức find() trả về -1 nếu không tìm thấy giá trị. (Xem ví dụ bên dưới)

Chỉ mục trong chuỗi trong Python là gì?

Lập chỉ mục chuỗi trong Python dựa trên 0 . ký tự đầu tiên trong chuỗi có chỉ số 0, ký tự tiếp theo có chỉ số 1, v.v. Chỉ số của ký tự cuối cùng sẽ là độ dài của chuỗi trừ đi một.