পাইথনে একটি তালিকা আনপ্যাক করবেন?


222

আমি মনে করি যে এখানে 'আনপ্যাক' হ'ল ভুল শব্দভাণ্ডার হতে পারে - দুঃখিত, কারণ আমি নিশ্চিত যে এটি একটি সদৃশ প্রশ্ন।

আমার প্রশ্নটি বেশ সহজ: কোনও ক্রিয়াকলাপে আইটেমগুলির একটি তালিকা প্রত্যাশা করে, কীভাবে ত্রুটি না পেয়ে আমি পাইথন তালিকার আইটেমটি পাস করতে পারি?

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

অবশ্যই তালিকাটি প্রসারিত করার একটি উপায় থাকতে হবে, এবং 'red','blue','orange'খুরের উপর ফাংশনটি পাস করতে হবে ?

উত্তর:



32

হ্যাঁ, আপনি *args(স্প্ল্যাট) সিনট্যাক্সটি ব্যবহার করতে পারেন :

function_that_needs_strings(*my_list)

যেখানে my_listকোনও পুনরাবৃত্তিযোগ্য হতে পারে; পাইথন প্রদত্ত বস্তুর উপর লুপ করবে এবং প্রতিটি উপাদানকে ফাংশনের পৃথক যুক্তি হিসাবে ব্যবহার করবে।

দেখুন কল অভিব্যক্তি ডকুমেন্টেশন

দুটি স্টার ব্যবহার করে কীওয়ার্ড-প্যারামিটার সমতুল্য রয়েছে:

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

এবং একটি ফাংশন স্বাক্ষরে ক্যাচ-সমস্ত আর্গুমেন্ট নির্দিষ্ট করার জন্য সমান সিনট্যাক্স রয়েছে :

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

14

পাইথন 3.5 যেহেতু আপনি সীমাহীন পরিমাণগুলি আনপ্যাক করতে পারেন list

পিইপি 448 - অতিরিক্ত আনপ্যাকিং সাধারণীকরণ

সুতরাং এটি কাজ করবে:

a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)

1
পাইথন ২.7 বা ৩.৪ দিয়ে আমি কীভাবে তা করতে পারি?
সিকার

1
@answerSeeker দক্ষ নয়, কিন্তুfunction_that_needs_strings(*(a+b))
Azalea
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.