Giải nén một danh sách trong Python?


222

Tôi nghĩ rằng 'giải nén' có thể là từ vựng sai ở đây - xin lỗi vì tôi chắc chắn đây là một câu hỏi trùng lặp.

Câu hỏi của tôi khá đơn giản: trong một hàm mong đợi một danh sách các mục, làm thế nào tôi có thể vượt qua một mục danh sách Python mà không gặp lỗi?

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!

Chắc chắn phải có một cách để mở rộng danh sách, và vượt qua chức năng 'red','blue','orange'trên móng guốc?

Câu trả lời:



32

Có, bạn có thể sử dụng *argscú pháp (splat):

function_that_needs_strings(*my_list)

nơi my_listcó thể được lặp đi lặp lại; Python sẽ lặp qua đối tượng đã cho và sử dụng từng phần tử làm đối số riêng cho hàm.

Xem tài liệu biểu hiện cuộc gọi .

Cũng có một tham số từ khóa tương đương, sử dụng hai sao:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)

và có cú pháp tương đương để chỉ định các đối số bắt tất cả trong chữ ký hàm:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments

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.