পাইথনে একটি নতুন তালিকা তৈরি করতে শুধুমাত্র বিদ্যমান তালিকার (অ্যারে) সেই উপাদানগুলিকে বের করে বা মুছে ফেলতে যা নির্দিষ্ট শর্ত পূরণ করে, বা প্রতিস্থাপন বা রূপান্তর সম্পাদন করে, তালিকা বোঝার ব্যবহার করুন।
নমুনা কোড সহ নিম্নলিখিতটি এখানে ব্যাখ্যা করা হয়েছে।
- তালিকা বোঝার স্বরলিপি মৌলিক ফর্ম
- তালিকার সমস্ত উপাদানগুলিতে প্রক্রিয়াটি প্রয়োগ করুন
- তালিকা থেকে উপাদানগুলি নিষ্কাশন করুন এবং মুছুন যা মানদণ্ড পূরণ করে
- তালিকার শর্ত পূরণ করে এমন উপাদানগুলি প্রতিস্থাপন বা রূপান্তর করুন
স্ট্রিংগুলির তালিকার নির্দিষ্ট উদাহরণগুলির জন্য নিম্নলিখিত নিবন্ধটি দেখুন।
মানদণ্ড পূরণ করে না এমন উপাদানগুলিকে এলোমেলোভাবে নিষ্কাশন করাও সম্ভব।
মনে রাখবেন যে তালিকাগুলি বিভিন্ন ধরণের ডেটা সঞ্চয় করতে পারে এবং অ্যারে থেকে কঠোরভাবে আলাদা। আপনি যদি মেমরির আকার এবং মেমরির ঠিকানা বা বড় ডেটার সংখ্যাগত প্রক্রিয়াকরণের প্রয়োজন হয় এমন প্রক্রিয়াগুলিতে অ্যারেগুলি পরিচালনা করতে চান তবে অ্যারে (স্ট্যান্ডার্ড লাইব্রেরি) বা NumPy ব্যবহার করুন।
নিম্নলিখিত তালিকা একটি উদাহরণ
l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
তালিকা বোঝার স্বরলিপি মৌলিক ফর্ম
একটি তালিকা থেকে একটি নতুন তালিকা তৈরি করার সময়, লুপের চেয়ে তালিকা বোঝা সহজ হয়।
[expression for any variable name in iterable object if conditional expression]
একটি অভিব্যক্তি এমন একটি উপাদানে প্রয়োগ করা হয় যা একটি পুনরাবৃত্তিযোগ্য বস্তুর শর্তাধীন অভিব্যক্তিকে সন্তুষ্ট করে (যেমন একটি তালিকা বা টিপল) এবং একটি নতুন তালিকার একটি উপাদান হয়ে ওঠে। “যদি শর্তসাপেক্ষ অভিব্যক্তি” বাদ দেওয়া যেতে পারে, এই ক্ষেত্রে অভিব্যক্তিটি সমস্ত উপাদানগুলিতে প্রয়োগ করা হয়।
নেস্টেড তালিকা বোঝার স্বরলিপি সহ আরও বিশদ বিবরণের জন্য নিম্নলিখিত নিবন্ধটি দেখুন।
তালিকার সমস্ত উপাদানগুলিতে প্রক্রিয়াটি প্রয়োগ করুন
উদাহরণস্বরূপ, যদি আপনি একটি তালিকার সমস্ত উপাদানগুলিতে কিছু প্রক্রিয়াকরণ প্রয়োগ করতে চান, উপরের তালিকা বোঝার অভিব্যক্তিতে পছন্দসই প্রক্রিয়াকরণ বর্ণনা করুন।
l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']
এটি সংখ্যার তালিকা এবং স্ট্রিংগুলির তালিকার মধ্যে রূপান্তর করতে ব্যবহার করা যেতে পারে।
তালিকা থেকে উপাদানগুলি নিষ্কাশন করুন এবং মুছুন যা মানদণ্ড পূরণ করে
যদি উপাদানটি শুধুমাত্র একটি শর্তাধীন অভিব্যক্তি দ্বারা নির্বাচন করা হয় তবে এটি একটি অভিব্যক্তি দ্বারা প্রক্রিয়া করা হয় না, তাই এটি নিম্নলিখিত ফর্মটি গ্রহণ করে
[variable name for variable name in original list if conditional expression]
একটি নতুন তালিকা তৈরি করা হয়েছে যেখান থেকে শুধুমাত্র সেই উপাদানগুলি যা শর্ত পূরণ করে (এলিমেন্ট যার জন্য শর্তসাপেক্ষ অভিব্যক্তি সত্য) বের করা হয়।
l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]
l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]
যদি “যদি শর্তসাপেক্ষ অভিব্যক্তি” “যদি শর্তসাপেক্ষ অভিব্যক্তি না হয়” তে সেট করা হয় তবে এটি একটি অস্বীকৃতিতে পরিণত হয়, এবং শুধুমাত্র যে উপাদানগুলি শর্ত পূরণ করে না (যে উপাদানগুলির জন্য শর্তসাপেক্ষ অভিব্যক্তিটি মিথ্যা) তা নির্বাচন এবং নিষ্কাশন করা যেতে পারে। অন্য কথায়, একটি নতুন তালিকা তৈরি করা হয় যা থেকে শর্ত পূরণকারী উপাদানগুলি সরানো হয়।
l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
অবশ্যই, not ব্যবহার না করে সমতুল্য শর্তসাপেক্ষ অভিব্যক্তি নির্দিষ্ট করে একই ফলাফল পাওয়া যায়।
l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]
l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]
শর্তসাপেক্ষ অভিব্যক্তি অংশ একাধিক শর্ত হতে পারে. নেতিবাচক নোটগুলিও ব্যবহার করা যেতে পারে।
l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]
l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]
তালিকার শর্ত পূরণ করে এমন উপাদানগুলি প্রতিস্থাপন বা রূপান্তর করুন
উপরের উপাদান নিষ্কাশনের উদাহরণে, যে উপাদানগুলি শর্ত পূরণ করেনি সেগুলি সরানো হয়েছে৷
আপনি যদি শুধুমাত্র শর্ত পূরণ করে এমন উপাদানগুলির উপর প্রতিস্থাপন, রূপান্তর ইত্যাদি সম্পাদন করতে চান, তাহলে তালিকা বোঝার স্বরলিপির অভিব্যক্তি অংশে ত্রিদেশীয় অপারেটর প্রয়োগ করুন।
পাইথনে, টারনারি অপারেটরটি নিম্নরূপ লেখা যেতে পারে
True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100
b = 30
y = 100 if b > 50 else 0
print(y)
# 0
এটি কিছুটা জটিল, তবে তালিকা বোঝার স্বরলিপি এবং টারনারি অপারেটরগুলির সংমিশ্রণটি নিম্নরূপ।
[True Value if Conditional Expression else False Value for any variable name in original list]
বন্ধনীতে আবদ্ধ অংশটি হল টারনারি অপারেটর (প্রকৃত কোডে বন্ধনী প্রয়োজনীয় নয়)।
[(True Value if Conditional Expression else False Value) for any variable name in original list]
সত্য বা মিথ্যা মানগুলির জন্য যদি কোনও পরিবর্তনশীল নাম লেখা হয় তবে মূল উপাদানটির মানটি হিসাবে ব্যবহার করা হয়। যদি একটি অভিব্যক্তি লেখা হয়, তবে সেই অভিব্যক্তিটির প্রক্রিয়াকরণ প্রয়োগ করা হয়।
l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]
l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]
l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]
l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]