2012-06-16 45 views
5

Cho phép nói có chức năng func() có hai đối số, ab. Có một số loại kỹ thuật trong Python để vượt qua một danh sách duy nhất mylist có cả hai giá trị cho hàm thay thế?chuyển một danh sách giá trị thay vì đối số mutiple cho một hàm?

def myfunc(a, b): 
    return a+b 

myfunc([1, 2]) 

Nếu ai hoàn toàn chắc chắn rằng ông đã luôn kêu gọi các chức năng tương tự và biết bao nhiêu lý lẽ phải mất, người ta có thể làm điều gì đó như thế này:

mylist = [1, 2] 
a, b = mylist 

myfunc(a, b) 

Nhưng nếu bạn có danh sách bạn cần để cung cấp cho một số hàm nhất định và mỗi hàm có số lượng đối số khác nhau? Người ta có thể viết các dòng mã riêng biệt cho từng chức năng của mình để giải nén danh sách thành biến và chuyển chúng vào các hàm tương ứng, nhưng nếu Python có thứ gì đó tích hợp để chuyển một danh sách đơn thay vì giá trị đối số riêng lẻ (khi chắc chắn trước danh sách đó có số lượng giá trị tương ứng), thì điều đó sẽ trông đẹp hơn rất nhiều và quan trọng nhất là yêu cầu ít dòng mã hơn.

Trả lời

8

Bạn có thể sử dụng *-unpack the list into arguments:

myfunc(*mylist) 
+3

tôi biết Python sẽ có một cái gì đó như thế này! –

+3

@ user975135 Điều này cũng có thể được thực hiện với dicts, rất hữu ích cho các đối số từ khóa hoặc chức năng gọi với nhiều đối số: 'mydict = {'a': 1, 'b': 2}' 'myfunc (** mydict)' – Darthfett

4
def myfunc(a, b): 
    return a+b 

mylist = [1, 2] 
myfunc(*mylist) 

Đây mylist có thể list, tuple, string vv chiều dài 2.

+0

+1, có thể là bất kỳ chuỗi nào, không chỉ là danh sách – PaulMcG

Các vấn đề liên quan