Trong phần trước, chúng ta đã bắt đầu xem xét ngữ nghĩa của các biến và đối tượng Python; . Đến cuối phần này, bạn sẽ có các công cụ cơ bản để bắt đầu so sánh và thao tác trên dữ liệu trong Python
Các phép tính toán học
Python thực hiện bảy toán tử số học nhị phân cơ bản, hai trong số đó có thể nhân đôi dưới dạng toán tử đơn nguyên. Chúng được tóm tắt trong bảng sau
OperatorNameDescription# Floor division print[11 // 2]9AdditionSum of
50 and
51
52SubtractionDifference of
50 and
51
55MultiplicationProduct of
50 and
51
58True divisionQuotient of
50 and
51
521Floor divisionQuotient of
50 and
51, removing fractional parts
524ModulusInteger remainder after division of
50 by
51
527Exponentiation
50 raised to the power of
51
510NegationThe negative of
50
512Unary plus
50 unchanged [rarely used]
Các toán tử này có thể được sử dụng và kết hợp theo cách trực quan, sử dụng dấu ngoặc đơn tiêu chuẩn để nhóm các hoạt động. Ví dụ
Trong 1]
55
Ra[1]
56
Phép chia tầng là phép chia thực có phần phân số bị cắt bớt
Trong 2]
57
58
Trong 3]
# Floor division print[11 // 2]
5
Toán tử chia tầng đã được thêm vào Python 3;
Cuối cùng, tôi sẽ đề cập đến toán tử số học thứ tám đã được thêm vào Python 3. 5. toán tử
515, dùng để chỉ ra tích ma trận của
50 và
51, để sử dụng trong các gói đại số tuyến tính khác nhau
Hoạt động theo bit
Ngoài các phép toán số tiêu chuẩn, Python bao gồm các toán tử để thực hiện các phép toán logic bit trên số nguyên. Chúng ít được sử dụng hơn nhiều so với các phép toán số học tiêu chuẩn, nhưng thật hữu ích khi biết rằng chúng tồn tại. Sáu toán tử bitwise được tóm tắt trong bảng sau
Toán tử TênMô tả518Bitwise ANDBits được xác định bằng cả
50 và
51____381Bitwise ORBits được xác định bằng
50 hoặc
51 hoặc cả hai
584Bitwise XORBits được xác định bằng
50 hoặc
51 nhưng không phải cả hai
587Bit shift left Dịch chuyển bit của
50 sang trái bởi
51 đơn vị
570Bit shift phảiShift bit của
50 sang phải bằng
51 đơn vị
573Bitwise negation của NOT10
Các toán tử bitwise này chỉ có ý nghĩa về mặt biểu diễn nhị phân của các số mà bạn có thể thấy bằng cách sử dụng hàm
575 tích hợp
Trong [4]
52
Ra[4]
51
Kết quả có tiền tố là
576, biểu thị biểu diễn nhị phân. Các chữ số còn lại cho biết số 10 được biểu thị dưới dạng tổng $1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0$. Tương tự, chúng ta có thể viết
Trong [5]
58
Ra[5]
57
Bây giờ, sử dụng OR theo bit, chúng ta có thể tìm số kết hợp các bit của 4 và 10
Trong [6]
560
Ra[6]
561
Trong [7]
562
Ra[7]
563
Các toán tử bitwise này không hữu ích ngay lập tức như các toán tử số học tiêu chuẩn, nhưng sẽ hữu ích nếu bạn nhìn thấy chúng ít nhất một lần để hiểu chúng thực hiện loại phép toán nào. Đặc biệt, người dùng từ các ngôn ngữ khác đôi khi bị cám dỗ sử dụng XOR [i. e. ,
584] khi chúng thực sự có nghĩa là lũy thừa [i. e. ,
527]
Hoạt động chuyển nhượng
Chúng ta đã thấy rằng các biến có thể được gán với toán tử "
579" và các giá trị được lưu trữ để sử dụng sau này. Ví dụ
Trong [8]
564
565
Chúng ta có thể sử dụng các biến này trong các biểu thức với bất kỳ toán tử nào đã đề cập trước đó. Ví dụ, để thêm 2 vào
50, chúng ta viết
Trong [9]
566
Ra[9]
567
Chúng tôi có thể muốn cập nhật biến
50 với giá trị mới này; . Bởi vì loại phép toán và phép gán kết hợp này rất phổ biến, Python bao gồm các toán tử cập nhật tích hợp sẵn cho tất cả các phép toán số học
Trong [10]
568
569
Có một toán tử gán tăng cường tương ứng với từng toán tử nhị phân được liệt kê trước đó;
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
Mỗi cái tương đương với phép toán tương ứng theo sau là phép gán. nghĩa là, đối với bất kỳ toán tử nào "
5615", biểu thức
5616 tương đương với
5617, với một chút bắt. Đối với các đối tượng có thể thay đổi như danh sách, mảng hoặc DataFrames, các hoạt động gán tăng cường này thực sự khác biệt một cách tinh tế so với các đối tác dài dòng hơn của chúng. họ sửa đổi nội dung của đối tượng ban đầu thay vì tạo một đối tượng mới để lưu trữ kết quả
Hoạt động so sánh
Một loại hoạt động khác có thể rất hữu ích là so sánh các giá trị khác nhau. Đối với điều này, Python thực hiện các toán tử so sánh tiêu chuẩn, trả về các giá trị Boolean
5618 và
5619. Các hoạt động so sánh được liệt kê trong bảng sauOperationDescriptionOperationDescription
5620
50 bằng
51
5623
50 không bằng
51
5626
50 nhỏ hơn
51
5629
50 lớn hơn
51
5632
50 nhỏ hơn hoặc bằng
51
5635
50 lớn hơn hoặc bằng
51
Các toán tử so sánh này có thể được kết hợp với các toán tử số học và bitwise để thể hiện phạm vi kiểm tra gần như vô hạn cho các số. Ví dụ: chúng ta có thể kiểm tra xem một số có phải là số lẻ hay không bằng cách kiểm tra xem mô đun với 2 có trả về 1 không
Trong [11]
570
Ra[11]
571
Trong [12]
572
Ra[12]
573
Chúng ta có thể xâu chuỗi nhiều phép so sánh lại với nhau để kiểm tra các mối quan hệ phức tạp hơn
Trong [13]
574
Ra[13]
571
Và, chỉ để làm bạn đau đầu một chút, hãy xem sự so sánh này
Trong [14]
576
Ra[14]
571
Nhớ lại rằng
5638 là toán tử lật bit và rõ ràng khi bạn lật tất cả các bit bằng 0, bạn sẽ có -1. Nếu bạn tò mò về lý do tại sao lại như vậy, hãy tra cứu sơ đồ mã hóa số nguyên bổ sung của cả hai, đây là cách mà Python sử dụng để mã hóa các số nguyên có dấu và nghĩ xem điều gì sẽ xảy ra khi bạn bắt đầu lật tất cả các bit của số nguyên được mã hóa theo cách này
Hoạt động Boolean
Khi làm việc với các giá trị Boolean, Python cung cấp các toán tử để kết hợp các giá trị bằng cách sử dụng các khái niệm chuẩn về "và", "hoặc" và "không". Có thể dự đoán, các toán tử này được biểu thị bằng các từ
5639,
5640 và
5641
Trong [15]
578
Ra[15]
571
Trong [16]
580
Ra[16]
571
Trong [17]
582
Ra[17]
573
Những người hâm mộ đại số Boolean có thể nhận thấy rằng toán tử XOR không được bao gồm; . Mặt khác, một thủ thuật thông minh mà bạn có thể sử dụng để XOR các giá trị Boolean như sau
Trong [18]
584
Hết[18]
573
Các loại phép toán Boolean này sẽ trở nên cực kỳ hữu ích khi chúng ta bắt đầu thảo luận về các câu lệnh luồng điều khiển như điều kiện và vòng lặp
Một điều đôi khi khó hiểu về ngôn ngữ này là khi nào sử dụng toán tử Boolean [
5639,
5640,
5641] và khi nào sử dụng phép toán bitwise [
5645,
5646,
5638]. Câu trả lời nằm trong tên của họ. Các toán tử Boolean nên được sử dụng khi bạn muốn tính toán các giá trị Boolean [i. e. , đúng hay sai] của toàn bộ câu lệnh. Các thao tác bitwise nên được sử dụng khi bạn muốn thao tác trên các bit riêng lẻ hoặc các thành phần của các đối tượng được đề cập
Toán tử nhận dạng và thành viên
Giống như
5639,
5640 và
5641, Python cũng chứa các toán tử giống như văn xuôi để kiểm tra danh tính và tư cách thành viên. Họ là những người sau đâyToán tửMô tả
5651True nếu
50 và
51 là các đối tượng giống hệt nhau
5654True nếu
50 và
51 không phải là đối tượng giống hệt nhau
5657True nếu
50 là thành viên của
51
5660True nếu
50 không phải là thành viên của
51
toán tử nhận dạng. "______2663" và "______2664"
Các toán tử nhận dạng, "
5663" và "______2664" kiểm tra danh tính đối tượng. Danh tính đối tượng khác với bình đẳng, như chúng ta có thể thấy ở đây
Trong 19]
586
Trong 20]
587
Hết[20]
571
Trong [21]
589
Hết[21]
573
Trong [22]
# Floor division print[11 // 2]1
Hết[22]
571
Các đối tượng giống hệt nhau trông như thế nào?
Trong [23]
# Floor division print[11 // 2]3
Hết[23]
571
Sự khác biệt giữa hai trường hợp ở đây là trong trường hợp đầu tiên,
50 và
51 trỏ đến các đối tượng khác nhau, trong khi ở trường hợp thứ hai, chúng trỏ đến cùng một đối tượng. Như chúng ta đã thấy trong phần trước, biến Python là con trỏ. Toán tử "______2663" kiểm tra xem hai biến có đang trỏ đến cùng một vùng chứa [đối tượng] hay không, thay vì đề cập đến những gì vùng chứa chứa. Với suy nghĩ này, trong hầu hết các trường hợp, người mới bắt đầu muốn sử dụng "
5663", ý nghĩa thực sự của chúng là
5671
nhà khai thác thành viên
Toán tử thành viên kiểm tra tư cách thành viên trong các đối tượng phức hợp. Vì vậy, ví dụ, chúng ta có thể viết
Trong [24]
# Floor division print[11 // 2]5
Ra[24]
571
Trong [25]
# Floor division print[11 // 2]7
Hết[25]
573
Các hoạt động thành viên này là một ví dụ về những gì làm cho Python dễ sử dụng so với các ngôn ngữ cấp thấp hơn như C. Trong C, tư cách thành viên thường được xác định bằng cách xây dựng thủ công một vòng lặp trên danh sách và kiểm tra sự bằng nhau của từng giá trị. Trong Python, bạn chỉ cần nhập những gì bạn muốn biết, theo cách gợi nhớ đến văn xuôi tiếng Anh đơn giản