সমস্যা বিবরণ
নির্দিষ্ট দৈর্ঘ্যের একটি লিস্ট ০ এবং ১ দিয়ে অ্যাল্টারনেটভাবে (১, ০, ১, ০...) ইনিশিয়ালাইজ করতে হবে।
উদাহরণ
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** সবচেয়ে ফ্লেক্সিবল