Có cách nào có thể thay đổi giá trị của phần tử trong xâu không?

Cho em hỏi có cách nào có thể thay đổi giá trị của phần tử trong chuỗi ko ạ. VD:

x='12345'
x[2]=str(4)

Em thử như thế này và nó báo lỗi, vậy phải làm ntn ạ?

Không nhé :smiley: Chuỗi tạo ra rồi không sửa được đâu. (immutable)

6 Likes

Trong Python, chuỗi bất biến, có nghĩa là không thể thay đổi trực tiếp giá trị của một chuỗi. Cách duy nhất mà bạn có thể làm là biến nó thành một cái gì đó có thể thay đổi giá trị, ví dụ như list chứa các “chuỗi có 1 chữ cái” (Python không có kiểu kí tự), thay đổi giá trị của nó rồi chuyển ngược lại thành chuỗi

x=list('12345')
x[2]=str(4)
x=''.join(x)
Thế tại sao có thể cộng và nhân chuỗi được?

Trong Python, hầu như tất cả mọi thứ đều là đối tượng, “biến trong Python” tham chiếu đến các đối tượng đó. Chuỗi không thể thay đổi, nhưng “biến trong Python” có thể tham chiếu đến các chuỗi khác. Khi cộng hoặc nhân chuỗi, ta đang copy giá trị của chuỗi khác để tạo ra chuỗi mới.

5 Likes

Cách ngắn gọn hơn là

x = x[:2] + str(4) + x[3:]

[:2] nghĩa là từ đầu chuỗi đến trước vị trí 2. Cú pháp này có hai điều lợi: không cần cú pháp cho điểm kết thúc chuỗi (s.end() ?! C++) và khi chèn thì ra 2 trước 2 sau rất gọn.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?