Nhận một giá trị từ một tuple


152

Có cách nào để lấy một giá trị từ một tuple trong Python bằng biểu thức không?

def tup():
  return (3, "hello")

i = 5 + tup()  # I want to add just the three

Tôi biết tôi có thể làm điều này:

(j, _) = tup()
i = 5 + j

Nhưng điều đó sẽ thêm vài chục dòng vào chức năng của tôi, tăng gấp đôi chiều dài của nó.


1
Đây _cũng chỉ là một biến. Nó thường được sử dụng để gán giá trị cho nó có thể bị loại bỏ. Nhưng về mặt lý thuyết, bạn có thể nhận được giá trị từ_
Màn hình thông tin

Câu trả lời:


202

Bạn có thể viết

i = 5 + tup()[0]

Tuples có thể được lập chỉ mục giống như danh sách.

Sự khác biệt chính giữa bộ dữ liệu và danh sách là bộ dữ liệu là bất biến - bạn không thể đặt các yếu tố của bộ dữ liệu thành các giá trị khác nhau hoặc thêm hoặc xóa các thành phần như bạn có thể khỏi danh sách. Nhưng khác với điều đó, trong hầu hết các tình huống, chúng hoạt động khá giống nhau.


54

Đối với bất kỳ ai trong tương lai đang tìm kiếm một câu trả lời, tôi muốn đưa ra một câu trả lời rõ ràng hơn nhiều cho câu hỏi.

# for making a tuple
my_tuple = (89, 32)
my_tuple_with_more_values = (1, 2, 3, 4, 5, 6)

# to concatenate tuples
another_tuple = my_tuple + my_tuple_with_more_values
print(another_tuple)
# (89, 32, 1, 2, 3, 4, 5, 6)

# getting a value from a tuple is similar to a list
first_val = my_tuple[0]
second_val = my_tuple[1]

# if you have a function called my_tuple_fun that returns a tuple,
# you might want to do this
my_tuple_fun()[0]
my_tuple_fun()[1]

# or this
v1, v2 = my_tuple_fun()

Hy vọng điều này sẽ làm sáng tỏ mọi thứ hơn nữa cho những người cần nó.


1
Cảm ơn các cập nhật. Để hoàn thiện, bạn có thể muốn thêm việc sử dụng dấu gạch dưới dưới dạng giữ chỗ 'giả' trong bộ giải nén.
Emile
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.