Hàm so sánh trong python
Show
Hướng dẫn cách so sánh 2 chuỗi trong python. Bạn sẽ học tất cả các cách so sánh 2 chuỗi trong python sau bài học này. Chúng ta có 7 phương pháp để so sánh 2 chuỗi trong python như sau:
So sánh đồng nhất và kiểm tra hai chuỗi có giống nhau trong Python | toán tử == và !=Để kiểm tra hai chuỗi có giống nhau trong Python, chúng ta sử dụng toán tử so sánh bằng print('abc' == 'abc') Tương tự chúng ta sử dụng toán tử so sánh khác print('abc' != 'abc') Lại nữa, các phép so sánh chuỗi bao gồm cả so sánh đồng nhất sẽ phân biệt chữ hoa và chữ thường trong chuỗi. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về ký tự chữ hoa chữ thường thì cũng không được coi là giống nhau. print('abc' == 'ABC') Thứ tự của các ký tự trong chuỗi cũng được xem xét khi đem đi so sánh. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về thứ tự các ký tự trong chuỗi thì cũng không được coi là giống nhau. print('abc' == 'cab') Nếu bạn muốn so sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗi, hãy xem tiếp ở phần sau. So sánh lớn nhỏ giữa 2 chuỗi trong python | toán tử <, <=, >, >=Chúng ta sử dụng các toán tử so sánh như Ví dụ: print('a' < 'b') Khác với so sánh số trong python, chúng ta không thể sử dụng trực tiếp giá trị của chuỗi để so sánh lớn nhỏ giữa chuỗi trong python. Thay vào đó, chúng ta sử dụng các điểm mã unicode (unicode code point) của các ký tự trong chuỗi để so sánh. Để kiểm tra điểm mã Unicode của một ký tự, chúng ta sử dụng tới hàm ord() trong python như sau: print(ord("a")) Khi so sánh lớn nhỏ hai ký tự đơn, chúng ta đơn giản so sánh điểm mã unicode của chúng. Ví dụ, do điểm mã unicode của ký tự a là 97 sẽ lớn hơn của ký tự A à 65 nên phép so sánh sau sẽ cho ra kết quả True: print( "a" > "A") Tuy nhiên khi so sánh 2 chuỗi ký tự với nhau, chúng ta không thể đơn thuần so sánh các điểm mã unicode của từng ký tự được. Lúc này, phép so sánh sẽ bắt đầu từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, các ký tự tiếp theo được so sánh cho tới khi xuất hiện một ký tự khác nhau đầu tiên trong hai chuỗi. Khi đó, điểm mã unicode của ký tự này sẽ đại diện cho cả chuỗi và được dùng để so sánh lớn nhỏ. Ví dụ: print( "aAaaaaa" < "aaa") Ở ví dụ 1, ký tự khác nhau đầu tiên trong hai chuỗi là A và a, do đó mặc dù chuỗi bên trái nhiều ký tự hơn chuỗi bên phải nhưng điểm mã unicode của A lại nhỏ hơn a, do đó chuỗi bên trái sẽ nhỏ hơn
chuỗi bên phải. Một điều đặc biệt khi so sánh lớn nhỏ giữa 2 chuỗi trong python là, các ký tự viết hoa sẽ LUÔN nhỏ hơn các ký tự chữ thường. print('Z' < 'z') Do đó trong trường hợp này chúng ta không cần phải dùng hàm ord() để tìm điểm mã unicode của ký tự nữa, mà có thể dùng quy luật ở trên để so sánh lớn nhỏ giữa ký tự viết thường và viết hoa trong Python. So sánh khớp một phần và kiểm tra một chuỗi có nằm trong chuỗi khác trong Python | toán tử in và not inChúng ta sử dụng các toán tử Ví dụ để kiểm tra chuỗi x có nằm trong y hay không, chúng ta viết Ví dụ: print('cc' in 'bb-cc-dd') Ngược lại với toán tử
print('cc' not in 'bb-cc-dd') Chúng ta hay sử dụng toán tử kiểm tra một chuỗi có nằm trong chuỗi khác trong các biểu thức điều kiện của lệnh if hoặc vòng lặp for. import os
So sánh đầu cuối và kiểm tra một chuỗi có bắt đầu hoặc kết thúc bằng một chuỗi chỉ định | startswith(), endswith() trong PythonChúng ta sử dụng các phương thức startswith(), endswith() để so sánh đầu hoặc cuối chuỗi và kiểm tra một chuỗi có bắt đầu hoặc kết thúc bằng một chuỗi khác hay không trong Python. Trường hợp bạn muốn kiểm tra một chuỗi có bắt đầu bằng một chuỗi ký tự chỉ định hay không, hãy dùng phương thức startswith() trong Python như ví dụ sau: s = 'aaa-bbb-ccc' Ngược lại, nếu bạn muốn kiểm tra một chuỗi có kết thúc bằng một chuỗi ký tự chỉ định hay không, hãy dùng phương thức endswith() trong Python như ví dụ sau: s = 'aaa-bbb-ccc' Lại nữa, chúng ta có thể chỉ định một tuple chứa các chuỗi ký tự, và sau đó kiểm tra xem chuỗi ban đầu có bắt đầu hoặc kết thúc bằng một trong các chuỗi ký tự trong tuple đó hay không. Nếu như không có chuỗi nào khớp thì kết quả False và ngược lại chỉ cần một chuỗi trong tuple khớp thì kết quả True được trả về. Ví dụ: s = 'aaa-bbb-ccc' So sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗi | upper(), lower()Trong các phương pháp so sánh chuỗi mà Kiyoshi đã giới thiệu ở trên đều có một điểm chung là có sự phân biệt rõ ràng giữa ký tự chữ thường và chữ hoa khi so sánh chuỗi. Nếu bạn không muốn phân biệt chữ thường chữ hoa khi so sánh chuỗi trong python, hãy chuyển đổi cả hai chuỗi ban đầu về dạng chữ hoa, hoặc chữ thường trước khi đem so sánh chúng. Lúc này, chúng ta sẽ cần sử dụng tới hai phương thức chuyển đổi chữ hoa chữ thường trong python là upper(), lower() trong python. Ví dụ, chúng ta chuyển hai chuỗi ban đầu về dạng chữ hoa và đem so sánh chúng, bằng cách dùng lower() như sau: s1 = 'abcd1' Tương tự như khi chúng ta sử dụng phương thức uppper(): s1 = 'abcd1'
So sánh 2 chuỗi và lấy ra các phần tử giống nhau trong python | set()Trong python không có một hàm hay phương thức nào giúp chúng ta có thể so sánh trực tiếp và lấy ra các phần tử giống nhau giữa hai chuỗi cả. Để so sánh 2 chuỗi trong python và lấy các phần tử giống nhau, chúng ta cần chuyển 2 chuỗi đã cho về kiểu set (tập hợp), sau đó mới tìm ra phần tử giống nhau giữa chúng thông qua phép tìm giao hai
tập hợp bằng toán tử
Việc chuyển chuỗi về kiểu set còn có một tác dụng nữa là giúp chúng ta xóa các phần tử trùng nhau trong chuỗi python trước khi đem chúng đi so sánh. Sau đây, chúng ta sẽ xem ví dụ cụ thể về so sánh 2 chuỗi trong python và lấy các phần tử giống nhau giữa chúng như sau: s1 = 'abcde' Sau khi thu về set kết quả chứa các phần tử giống nhau giữa 2 chuỗi đã cho, chúng ta có thể dùng vòng lặp for để lấy ra các phần tử trong set kết quả. Lưu ý là do trong set không tồn tại index nên thứ tự lấy các phần tử và in ra màn hình có thể khác nhau trong các lần thực thi. s1 = 'abcde' Chúng ta cũng có thể tìm số phần tử trùng nhau giữa 2 chuỗi python bằng cách sử dụng hàm len() để đếm số phần tử trong set kết quả thu về. Ví dụ: s1 = 'abcde'
Bạn cũng có thể chuyển set kết quả về kiểu list và thu về một list mới chứa các phần tử khác nhau trong 2 chuỗi ban đầu bằng cách sử dụng hàm list() trong python như ví dụ sau: s1 = 'abcde'
Tương tự khi so sánh 2 chuỗi, bạn cũng có thể so sánh 3 chuỗi hay nhiều chuỗi với nhau và tìm ra các phần tử giống nhau trong python như sau: s1 = 'abcde' So sánh 2 chuỗi và lấy ra các phần tử khác nhau trong python | set()Trong python không có một hàm hay phương thức nào giúp chúng ta có thể so sánh trực tiếp và lấy ra các phần tử khác nhau giữa hai chuỗi cả. Để so sánh 2 chuỗi trong python và lấy các phần tử khác nhau, chúng ta cần chuyển 2 chuỗi đã cho về kiểu set (tập hợp), sau đó mới tìm ra phần tử khác nhau giữa chúng thông qua phép tìm phần bù giữa hai tập hợp bằng toán tử
Việc chuyển chuỗi về kiểu set còn có một tác dụng nữa là giúp chúng ta xóa các phần tử trùng nhau trong chuỗi python trước khi đem chúng đi so sánh. Sau đây, chúng ta sẽ xem ví dụ cụ thể về so sánh 2 chuỗi trong python và lấy các phần tử khác nhau giữa chúng như sau: s1 = 'abcde' Sau khi thu về set kết quả chứa các phần tử khác nhau giữa 2 chuỗi đã cho, chúng ta có thể dùng vòng lặp for để lấy ra các phần tử trong set kết quả. Lưu ý là do trong set không tồn tại index nên thứ tự lấy các phần tử và in ra màn hình có thể khác nhau trong các lần thực thi. s1 = 'abcde' Chúng ta cũng có thể tìm số phần tử khác nhau giữa 2 chuỗi python bằng cách sử dụng hàm len() để đếm số phần tử trong set kết quả thu về. Ví dụ: s1 = 'abcde'
Bạn cũng có thể chuyển set kết quả về kiểu list và thu về một list mới chứa các phần tử khác nhau trong 2 chuỗi ban đầu bằng cách sử dụng hàm list() trong python như ví dụ sau: s1 = 'abcde'
Tổng kếtTrên đây Kiyoshi đã hướng dẫn bạn về cách so sánh chuỗi trong python rồi. Đây đều là các phương pháp hết sức cơ bản, nên bạn hãy thực hành và master chúng ngay nhé. Ngoài các phương pháp cơ bản trên, chúng ta cũng còn một cách khác để so sánh chuỗi trong python, đó chính là sử dụng biểu thức chính quy (Regular expression) trong Python. Phần này hơi khó hiểu chút với các bạn mới bắt đầu, nên Kiyoshi mạn phép sẽ chia sẻ nó trong các bài viết khác nhé. Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam! HOME>> python cơ bản - lập trình python cho người mới bắt đầu>>09. chuỗi trong python Bài sauĐảo ngược chuỗi trong python Bài tiếpTách số trong chuỗi python |