Trả về một tuple Python

Tôi đã xác định một chức năng khá đơn giản có đầu ra không mong muốn. Tôi đang sử dụng phần đánh giá trò chơi trên Steam và muốn sử dụng một chức năng để thu hẹp phạm vi dựa trên tiêu đề trò chơi. Điều này hoạt động tốt

one_game = games[games['title'] == "Robocraft"]

Đầu ra là một khung dữ liệu giống như bản gốc. Tuy nhiên, khi tôi cố gắng tạo một hàm [bằng cách chuyển cùng tên trò chơi làm đối số] để cắt khung dữ liệu như sau

def slice[game]:
    out = games[games['title'] == game],
    return[out]

Tôi nhận được một bộ giá trị là "[362 hàng x 5 cột],]" thay vì một khung dữ liệu. Đó có phải là do lệnh return hay đó chỉ là điều gì đó xảy ra khi bạn sử dụng hàm do người dùng xác định?

Điều này có vẻ như tất cả những gì tôi cần làm là chuyển đổi bộ dữ liệu trở lại khung dữ liệu. Tuy nhiên, tôi thậm chí không thể làm điều đó. Khi tôi làm, tôi nhận được lỗi này

Chẳng hạn, hãy tạo một hàm lấy hai số làm đối số. Hàm này trả về tổng, hiệu, nhân và chia giữa hai số này

Đây là cách nó trông trong mã

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bây giờ bạn có thể gọi hàm này cho hai số và gán giá trị trả về cho các biến

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

Điều này dẫn đến kết quả sau đây được in trong bảng điều khiển

The sum is 15
The difference is -5
The multiplication gives 50
The division gives 0.5

Trả về nhiều giá trị hoạt động như thế nào trong Python

Trong phần trước, bạn đã học cách trả về nhiều giá trị bằng cách phân tách các giá trị bằng dấu phẩy

Nhưng tại sao và nó hoạt động như thế nào?

Bộ dữ liệu trong Python

Mã ví dụ hoạt động vì nó trả về một tuple

Trong trường hợp bạn không biết tuple là gì, hãy xem bài viết chuyên sâu này. Tóm lại, một bộ là một nhóm gồm 0 hoặc nhiều phần tử

Chẳng hạn, đây là một ví dụ về bộ ba giá trị đại diện cho một điểm 3D

coords = [1, 1, 3]

Lưu ý rằng các bộ dữ liệu Python không phải lúc nào cũng cần dấu ngoặc đơn

Ví dụ: bạn có thể viết điểm 3D ở trên dưới dạng

coords = 1, 1, 3

Điều này tạo ra cùng một bộ ba giá trị đại diện cho một điểm 3D

Cách truy cập giá trị Tuple trong Python

Để truy cập và lưu trữ một giá trị từ một bộ dữ liệu, bạn có thể truy cập nó giống như cách bạn truy cập một giá trị từ danh sách. Nói cách khác, sử dụng toán tử [] với chỉ số

Ví dụ: hãy lưu trữ các điểm 3D vào các biến x, y và z

coords = 1, 1, 3

x = coords[0]
y = coords[1]
z = coords[2]

print[x, y, z]

Điều này dẫn đến đầu ra sau trong bảng điều khiển

________số 8

Điều này hoạt động tốt, nhưng có một cách dễ dàng hơn cho mục đích cụ thể này

Phá hủy Tuple trong Python

Bạn có thể sử dụng phá hủy bộ dữ liệu để truy cập các giá trị bộ dữ liệu và lưu trữ chúng vào các biến

Phá hủy bộ có nghĩa là bạn khai báo một loạt các biến được phân tách bằng dấu phẩy trong một dòng và gán từng giá trị bộ cho biến tương ứng. Điều này giúp bạn tiết kiệm các dòng mã trong khi nó cũng làm cho ý định rất rõ ràng

Hãy để tôi chỉ ra những gì tôi có ý nghĩa

Chẳng hạn, trong ví dụ trước, bạn đã lưu tọa độ 3D x, y và z trên các dòng riêng biệt bằng toán tử []. Thay vì làm theo cách này, bạn có thể sử dụng tuple destructuring như một tốc ký

coords = 1, 1, 3

x, y, z = coords

print[x, y, z]

Do đó, mỗi tọa độ trong điểm 3D được gán cho một biến riêng

________số 8

Như bạn có thể thấy, giá trị đầu tiên của bộ dữ liệu được gắn vào biến x, giá trị thứ hai đến y và giá trị thứ ba đến z

Bây giờ bạn đã hiểu cách các bộ dữ liệu được tạo và cách các giá trị được đọc từ chúng

Cách trả về nhiều giá trị từ một hàm

Để trả về nhiều giá trị từ một hàm, hãy trả về các giá trị dưới dạng một bộ. Để sau đó truy cập/lưu trữ các giá trị này vào các biến, hãy sử dụng tuple destructuring

Nếu bây giờ bạn nhìn vào ví dụ bạn đã thấy trong phần giới thiệu

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bạn nhận ra hàm này trả về một bộ gồm bốn giá trị. Để truy cập bốn giá trị này, bạn sử dụng cấu trúc lại tuple. Đây là giao diện của nó trong mã

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

đầu ra

The sum is 15
The difference is -5
The multiplication gives 50
The division gives 0.5

Bây giờ các giá trị bộ trả về được lưu trữ trong các biến sum, diff, mul và div

Việc hủy cấu trúc một bộ trả về theo cách này rất tiện lợi. Bạn không cần sử dụng toán tử truy cập dấu ngoặc vuông để chọn thủ công các giá trị từ bộ dữ liệu. Thay vào đó, cú pháp phá hủy sẽ giải quyết vấn đề đó

Sự kết luận

Để trả về nhiều giá trị từ một hàm trong Python, hãy trả về một bộ giá trị

Như bạn có thể biết, một bộ là một nhóm các giá trị được phân tách bằng dấu phẩy. Bạn có thể tạo một bộ có hoặc không có dấu ngoặc đơn. Để truy cập/lưu trữ nhiều giá trị được trả về bởi một hàm, hãy sử dụng cấu trúc tuple

Tuple là giá trị trả về trong Python là gì?

Nói đúng ra, một hàm chỉ có thể trả về một giá trị, nhưng nếu giá trị đó là một bộ, thì hiệu quả giống như trả về nhiều giá trị. For example, if you want to divide two integers and compute the quotient and remainder, it is inefficient to compute x//y and then x%y .

Trả về {} trong Python là gì?

Câu lệnh trả về trong Python là một câu lệnh đặc biệt mà bạn có thể sử dụng bên trong một hàm hoặc phương thức để gửi lại kết quả của hàm cho người gọi . Câu lệnh trả về bao gồm từ khóa trả về theo sau là giá trị trả về tùy chọn. Giá trị trả về của hàm Python có thể là bất kỳ đối tượng Python nào.

Chủ Đề