*
এটি "স্প্ল্যাট" অপারেটর: এটি ইনপুট হিসাবে একটি তালিকা নেয় এবং এটি ফাংশন কলের আসল অবস্থানগত আর্গুমেন্টগুলিতে প্রসারিত করে।
সুতরাং যদি uniqueCrossTabs
ছিল [ [ 1, 2 ], [ 3, 4 ] ]
, তবে itertools.chain(*uniqueCrossTabs)
বলার মত একইitertools.chain([ 1, 2 ], [ 3, 4 ])
এটা ন্যায়বিচার মধ্যে পাস থেকে স্পষ্টতই পৃথক uniqueCrossTabs
। আপনার ক্ষেত্রে, আপনার তালিকাগুলি চাওয়া তালিকাগুলির একটি তালিকা রয়েছে; আপনি যে itertools.chain()
স্থিতিগত আর্গুমেন্টের কাছে এটি পাঠাচ্ছেন তার সংমিশ্রণের উপর একটি পুনরাবৃত্তিকে ফেরত দেয়, যেখানে প্রতিটি অবস্থানগত আর্গুমেন্ট তার নিজস্বভাবে পুনরাবৃত্তিযোগ্য।
অন্য কথায়, আপনি প্রতিটি তালিকাটি uniqueCrossTabs
আর্গুমেন্ট হিসাবে পাস করতে চান chain()
, যা তাদের একসাথে শৃঙ্খলাবদ্ধ করবে, তবে আপনার পৃথক ভেরিয়েবলের তালিকাগুলি নেই, সুতরাং আপনি *
তালিকাগুলির তালিকাকে কয়েকটি তালিকার যুক্তিতে বিস্তৃত করতে অপারেটরটি ব্যবহার করেন ।
জোচেন রিটজেল মন্তব্যগুলিতে chain.from_iterable()
যেমন উল্লেখ করেছেন, এই অপারেশনের জন্য এটি আরও উপযুক্ত। আপনার কোডটি তখন সহজ হয়ে যায়:
uniqueCrossTabs = list(itertools.chain.from_iterable(uniqueCrossTabs))