Tại sao kết quả trả về của print(list.sort()) lại là none?

Nếu mình viết tách ra thì được
list.sort()
print(list)
Nhưng nếu mình viết
print(list.sort()) thì kết quả trả về là none
Mình nghĩ : chắc là không được lồng kiểu đấy, nhưng mình viết
print(str.upper())
nó vẫn chạy.

Đơn giản là hàm sort trả về None
Còn hàm str.upper() (với str ở đây là variable) thì trả về str ( str ở đây là kiểu dữ liệu)

5 Likes

Hàm sort() chỉ sort list đã có sẵn, nó không return gì cả, nên khi

print(list.sort())

thì nó sẽ ra None (vì nó không return thêm cái gì mới)
mà thay vào đó, nó sort() lại cái list đã có.

Screen Shot 2021-08-30 at 09.19.05

Thay vì làm vậy, bạn có thể làm như vầy:

# có thể là bạn muốn cái này
list = ['123', '0123',  '234', 'asd', '234']
print(list)
print(sorted(list))

Nó sẽ ra như vầy:

[‘123’, ‘0123’, ‘234’, ‘asd’, ‘234’]
[‘0123’, ‘123’, ‘234’, ‘234’, ‘asd’]
[Finished in 0.2s]

Khác biệt là:
list.sort() sort chính bản thân nó
sorted(list) tạo ra 1 copy của cái list rồi sort cái copy đó, list cũ vẫn không thay đổi.

7 Likes

Rất dễ hiểu, cảm ơn bạn!

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