কম্পিউটার টিউটোরিয়াল

পাইথনে লিস্ট ০ এবং ১ দিয়ে অ্যাল্টারনেটভাবে ইনিশিয়ালাইজ করা


সমস্যা বিবরণ

নির্দিষ্ট দৈর্ঘ্যের একটি লিস্ট ০ এবং ১ দিয়ে অ্যাল্টারনেটভাবে (১, ০, ১, ০...) ইনিশিয়ালাইজ করতে হবে।

উদাহরণ

Input:  length = 7
Output: [1, 0, 1, 0, 1, 0, 1]

পদ্ধতি ১: লুপ + মডুলো (সহজ বোঝার)

result = []
length = 7

for i in range(length):
    if i % 2 == 0:
        result.append(1)  # ইভেন ইনডেক্সে ১
    else:
        result.append(0)  # আড্ড ইনডেক্সে ০

print(result)  # [1, 0, 1, 0, 1, 0, 1]

পদ্ধতি ২: স্লাইস অ্যাসাইনমেন্ট (দক্ষ)


import math

length = 7
result = [None] * length

# ১ এবং ০ এর কাউন্ট
ones_count = math.ceil(length / 2)
zeros_count = length - ones_count

# স্লাইস অ্যাসাইনমেন্ট
result[::2] = [1] * ones_count    # ০, ২, ৪... ইনডেক্স
result[1::2] = [0] * zeros_count  # ১, ৩, ৫... ইনডেক্স

print(result)  # [1, 0, 1, 0, 1, 0, 1]

পদ্ধতি ৩: itertools.cycle (ফাংশনাল)


from itertools import cycle, islice

length = 7
result = list(islice(cycle([1, 0]), length))
print(result)  # [1, 0, 1, 0, 1, 0, 1]

পদ্ধতি ৪: লিস্ট কাম্প্রিহেনশন (কনসাইজ)


length = 7
result = [1 if i % 2 == 0 else 0 for i in range(length)]
print(result)

তুলনা

পদ্ধতিরিডেবিলিটিপারফরম্যান্সফ্লেক্সিবিলিটি
Loop + Moduloউচ্চমিডিয়ামউচ্চ
Slice Assignmentমিডিয়ামউচ্চ (C-লেভেল)মিডিয়াম
itertools.cycleমিডিয়ামমিডিয়ামউচ্চ (যেকোনো প্যাটার্ন)
List Comprehensionউচ্চউচ্চমিডিয়াম

উপসংহার

  • সাধারণ কাজের জন্য **লিস্ট কম্প্রিহেনশন** সেরা ব্যালেন্স
  • খুব বড় লিস্টের জন্য **স্লাইস অ্যাসাইনমেন্ট** দ্রুত
  • জটিল প্যাটার্নের জন্য **itertools.cycle** সবচেয়ে ফ্লেক্সিবল
  1. পাইথন লিস্টে ইন্ডেক্স এবং ভ্যালু অ্যাক্সেস করা

  2. পাইথনে অল্টারনেট রেঞ্জ স্লাইসিং

  3. পাইথনে বাইনারি লিস্টকে ইন্টিজারে রূপান্তর

  4. পাইথন লিস্ট কম্প্রিহেনশন এবং স্লাইসিং