Python Hàm abs(): Ví dụ về giá trị tuyệt đối

⚡ Tóm tắt thông minh

Python Hàm `abs()` là một hàm tích hợp trả về giá trị tuyệt đối của một số, tức là khoảng cách của số đó đến số 0 mà không có dấu. Hàm này chấp nhận số nguyên, số thực và số phức, trả về giá trị tuyệt đối đối với số phức.

  • 🔢 Giá trị tuyệt đối: Hàm abs() loại bỏ dấu của một số và trả về khoảng cách của nó đến số 0, vì vậy cả abs(-25) và abs(25) đều cho kết quả là 25.
  • 🧮 Các loại số: Tham số duy nhất có thể là số nguyên, số thực hoặc số phức, và kiểu dữ liệu trả về khớp với kiểu dữ liệu đầu vào.
  • 🔟 Độ lớn phức tạp: Đối với một số phức như (3+10j), hàm abs() trả về độ lớn của nó, tức là căn bậc hai của bình phương phần thực và phần ảo.
  • 📋 Danh sách: Hàm abs() xử lý từng số một, vì vậy một biểu thức tạo dạng [abs(n) for n in nums] sẽ áp dụng nó cho mọi phần tử.
  • ⚖️ abs() so với math.fabs(): Hàm abs() tích hợp sẵn giữ nguyên kiểu dữ liệu đầu vào và hỗ trợ số phức, trong khi math.fabs() luôn trả về kiểu float và cần mô-đun math.
  • 🤖 Hỗ trợ AI: Các công cụ AI như GitHub Copilot tạo ra các lệnh abs() và NumPy np.abs() cho các tác vụ như tính sai số tuyệt đối trung bình từ một lời nhắc ngắn gọn.

Python Hàm abs ()

Python abs ()

Python abs () là một hàm tích hợp có sẵn trong thư viện chuẩn của PythonHàm này trả về giá trị tuyệt đối của số đã cho. Giá trị tuyệt đối của một số là giá trị không xét đến dấu của nó. Số được cho có thể là số nguyên, số thập phân hoặc số phức. Nếu số được cho là số phức, thì nó sẽ trả về độ lớn của số phức đó.

cú pháp

Cú pháp của hàm abs() được hiển thị bên dưới:

abs(value)

Thông số (giá trị)

Giá trị đầu vào được cung cấp cho abs() để lấy giá trị tuyệt đối. Giá trị này có thể là số nguyên, số thực hoặc số phức.

Giá trị trả lại:

Hàm abs() trả về giá trị tuyệt đối của số đã cho.

  • Nếu giá trị đầu vào là số nguyên, giá trị trả về cũng sẽ là số nguyên.
  • Nếu giá trị đầu vào là số thực, giá trị trả về cũng sẽ là số thực.
  • Nếu đầu vào là một số phức, giá trị trả về sẽ là độ lớn của đầu vào.

Các ví dụ

Các ví dụ sau đây minh họa cách áp dụng hàm abs() cho các giá trị số nguyên, số thực và số phức.

Code Ví dụ 1: Số nguyên và số thực

Để lấy giá trị tuyệt đối của một số nguyên và một số thực, hãy xem đoạn mã này:

# testing abs() for an integer and float
  int_num = -25
  float_num = -10.50
  print("The absolute value of an integer number is:", abs(int_num))
  print("The absolute value of a float number is:", abs(float_num))

Đầu ra:

The absolute value of an integer number is: 25
The absolute value of a float number is: 10.5

Ví dụ 2: Số phức

Để lấy giá trị tuyệt đối của một số phức, hãy sử dụng đoạn mã này:

# testing abs() for a complex number
complex_num = (3+10j)
print("The magnitude of the complex number is:", abs(complex_num))

Đầu ra:

The magnitude of the complex number is: 10.44030650891055

Cách tìm giá trị tuyệt đối của một danh sách trong Python

Hàm abs() hoạt động trên một số duy nhất, vì vậy việc truyền cả một danh sách vào đó sẽ gây ra lỗi TypeError. Để áp dụng nó cho mọi phần tử trong danh sách, hãy sử dụng list comprehension gọi hàm abs() trên từng phần tử:

numbers = [12, 30, -33, -22, 77, -100]
abs_numbers = [abs(num) for num in numbers]
print(abs_numbers)

Đầu ra:

[12, 30, 33, 22, 77, 100]

Biểu thức hiểu này giữ nguyên thứ tự ban đầu và trả về một danh sách mới gồm các giá trị dương. Bạn có thể đạt được kết quả tương tự với hàm map() tích hợp sẵn, chẳng hạn. list(map(abs, numbers)), phương thức này áp dụng abs() cho từng phần tử mà không cần viết vòng lặp tường minh.

  • Hãy sử dụng list comprehension khi bạn cũng muốn lọc hoặc biến đổi các giá trị.
  • Hãy sử dụng map() để có một lệnh gọi ngắn gọn, dễ đọc, áp dụng trực tiếp hàm abs().
  • Đối với các tập dữ liệu số lớn, mảng NumPy với np.abs() nhanh hơn so với... Python Vòng lặp.

Python abs() so với math.fabs()

Python Cung cấp hai cách để lấy giá trị tuyệt đối: hàm abs() tích hợp sẵn và hàm fabs() của mô-đun math. Chúng trông tương tự nhau nhưng hoạt động khác nhau:

import math

print(abs(-7))          # 7 (int is unchanged)
print(math.fabs(-7))    # 7.0 (float result)

Đầu ra:

7
7.0

Sự khác biệt chính giữa hai chức năng này là:

  • Kiểu trả về: Hàm abs() giữ nguyên kiểu dữ liệu đầu vào và trả về một số nguyên, trong khi hàm math.fabs() luôn trả về một số thực.
  • Nhập khẩu: Hàm abs() luôn có sẵn, nhưng math.fabs() thì cần import math.
  • Số phức: Hàm abs() trả về độ lớn của một số phức, trong khi hàm math.fabs() sẽ báo lỗi TypeError nếu nhập số phức.

Ứng dụng thực tế của Python Hàm abs ()

Vì bỏ qua thông tin về dấu, hàm abs() hữu ích khi chỉ cần độ lớn của giá trị chứ không cần biết hướng của nó. Một ví dụ phổ biến là tìm hiệu giữa hai giá trị đo được:

temp_morning = 12
temp_night = -5
print("Temperature change:", abs(temp_morning - temp_night))

Đầu ra:

Temperature change: 17

Các ứng dụng thường ngày của giá trị tuyệt đối bao gồm:

  • Khoảng cách và sự khác biệt: Đo khoảng cách giữa hai điểm, nhiệt độ hoặc dấu thời gian bất kể giá trị nào lớn hơn.
  • Các chỉ số lỗi: Tính toán sai số tuyệt đối giữa giá trị dự đoán và giá trị thực tế.
  • Kiểm tra dung sai: Kiểm tra xem kết quả có đủ gần với mục tiêu hay không, ví dụ như trong abs(actual - expected) < 0.01.
  • Tài chính: Báo cáo mức lãi hoặc lỗ mà không nêu dấu.

Cũng giống như các hàm round (), abs() là một hàm tích hợp sẵn mà bạn có thể gọi trực tiếp mà không cần nhập bất kỳ mô-đun nào.

Câu Hỏi Thường Gặp

Không. Hàm abs() trả về một giá trị mới và không bao giờ sửa đổi đối số của nó, bởi vì các số trong Python là bất biến. Để giữ kết quả, hãy gán nó cho một biến, ví dụ: positive = abs(number). Biến ban đầu vẫn giữ giá trị có dấu của nó.

Không. Việc truyền một chuỗi sẽ gây ra lỗi TypeError: bad operand type for abs(): 'str', vì hàm abs() chỉ chấp nhận số nguyên, số thực hoặc số phức. Để đo độ dài của một chuỗi, hãy sử dụng hàm len(), hàm này trả về số ký tự mà chuỗi đó chứa.

Bạn có thể tính toán thủ công. Với một giá trị x, max(x, -x) trả về giá trị tuyệt đối, và (x ** 2) ** 0.5 cũng hoạt động với số thực. Tuy nhiên, hàm abs() tích hợp sẵn rõ ràng hơn, nhanh hơn và cũng xử lý được số phức.

Không. Ký hiệu gạch dọc |x| là ký hiệu toán học, không phải là... Python cú pháp; trong Python Ký hiệu | là toán tử OR bitwise. Để có được giá trị tuyệt đối, bạn phải gọi hàm abs() tích hợp sẵn, ví dụ abs(-8), trả về 8.

__abs__ là phương thức dunder mà hàm abs() gọi ngầm. Khi bạn viết abs(obj), Python Hàm này chạy obj.__abs__(). Việc định nghĩa __abs__ trong lớp của riêng bạn cho phép abs() hoạt động trên các đối tượng tùy chỉnh, chẳng hạn như một vectơ hoặc một kiểu dữ liệu tiền tệ.

Hãy sử dụng các phiên bản vector hóa thay vì vòng lặp. Phương thức `np.abs(array)` của NumPy trả về một mảng mới với mọi phần tử đều được gán giá trị dương, và lớp `Series` của pandas cung cấp phương thức `Series.abs()`. Cả hai đều áp dụng giá trị tuyệt đối cho tất cả các phần tử cùng một lúc, điều này nhanh hơn đối với các tập dữ liệu lớn.

Hàm `abs()` là nền tảng của các chỉ số lỗi và khoảng cách. Sai số tuyệt đối trung bình (MAE) và tổn thất L1 tính tổng các hiệu số tuyệt đối giữa dự đoán và mục tiêu, và giá trị tuyệt đối đo lường độ lớn của gradient. Đối với toàn bộ mảng, `np.abs()` của NumPy áp dụng cùng một phép toán trên mọi phần tử một cách hiệu quả.

GitHub Copilot đề xuất các lệnh abs(), các biểu thức tạo danh sách như [abs(n) for n in nums] và các dòng NumPy np.abs() trực tiếp từ một bình luận ngắn. Nó cũng có thể tạo cấu trúc cho hàm sai số tuyệt đối trung bình, cho phép bạn xác nhận logic thay vì viết mã lặp đi lặp lại.

Tóm tắt bài viết này với: