30/09/2018, 17:23
Hỏi về so sánh trong python
Các bác cho e hỏi chút ạ, hiện tại e đang học về python, đến phần danh sách (list) e muốn hỏi là câu lệnh cmp khi so sánh 2 danh sách thì nó dựa vào j để so sánh ạ. Ví dụ e có đoạn code như này
list1, list2 = [123, 'xyz'], [456, 'abc']
print cmp(list1, list2);
print cmp(list2, list1);
list3 = list2 + [786];
print cmp(list2, list3)
kết quả hiện ra là
-1, 1 , - 1
em mới chỉ hiểu là 1 là đúng, -1 là sai nhưng không hiểu nó sẽ lấy điều kiện như nào để so sánh giữa các chuỗi với nhau ạ,
Em cảm ơn
Bài liên quan
cmp(a,b) trả về -1, hay số âm, tức là a < b chứ ko phải sai hay đúng. Trả về 1, hay số dương, tức là a > b, còn trả về 0 là a == b.
nó so sánh tương tự như khi so sánh chuỗi thôi, ví dụ ‘ab’ thì < ‘abc’ nên cmp(‘ab’, ‘abc’) sẽ cho ra kết quả -1
ở đây list1[0] là 123, bé hơn list2[0] là 456 nên cmp(list1, list2) trả về -1, tức là list1 < list2
list3 = [456, ‘abc’, 786]. list2 có 2 phần tử đầu tiên giống list3, nhưng do ko có phần tử thứ 3 nên được tính là nhỏ hơn list3 => cmp(list2, list3) trả về -1.
còn nếu 2 phần tử so sánh khác loại thì có lẽ hơi vô nghĩa, ví dụ so sánh [1, 2, 3] với [‘a’, ‘b’, ‘c’] tức là đem số đi so sánh với chuỗi thì so cái gì.
em cảm ơn a đã trả lời ạ, a cho e hỏi thêm là ví dụ em có 2 chuỗi:
thì kết quả trả về sẽ như nào ạ? khi so sánh là nó so sánh tất cả các phần tử của chuỗi hay chỉ so sánh đến phần tử nào ạ?
với ‘xyz’ và ‘abc’ so sánh với nhau là dựa vào j để so sánh ạ?
Em cảm ơn
cảm ơn bạn ý mình là cái ‘xyz’ > ‘abc’ là do dựa vào bảng chữ cái hay như nào ý?
Là dựa vào bảng mã. Cụ thể hơn là nó so sánh bằng hàm ord của từng kí tự