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

পাইথন: লিস্টে প্রতি N-তম ইন্ডেক্সে অন্য লিস্ট অ্যাপেন্ড করা

এক লিস্টের প্রতি N-তম ইন্ডেক্সে অন্য একটি লিস্টের এলিমেন্টগুলো ইনসার্ট (অ্যাপেন্ড) করার জন্য enumerate() এবং মডুলাস অপারেটর ব্যবহার করা হয়।

উদাহরণ


my_list = [13, 27, 48, 12, 21, 45, 28, 19, 63]
append_list = ['P', 'Y', 'T']
N = 3

print("মূল লিস্ট:", my_list)
print("অ্যাপেন্ড লিস্ট:", append_list)
print("N =", N)

result = []
for idx, val in enumerate(my_list):
    if idx % N == 0:
        # প্রতি N-তম ইন্ডেক্সে append_list-এর সব এলিমেন্ট যোগ
        result.extend(append_list)
    result.append(val)

print("ফলাফল:", result)

আউটপুট


মূল লিস্ট: [13, 27, 48, 12, 21, 45, 28, 19, 63]
অ্যাপেন্ড লিস্ট: ['P', 'Y', 'T']
N = 3
ফলাফল: ['P', 'Y', 'T', 13, 27, 48, 'P', 'Y', 'T', 12, 21, 45, 'P', 'Y', 'T', 28, 19, 63]

ব্যাখ্যা

  • ইন্ডেক্স ০, ৩, ৬, ৯... (N-র গুণিতক) এ append_list ইনসার্ট হয়
  • extend() দিয়ে লিস্টের সব এলিমেন্ট একসাথে যোগ হয়
  • মূল এলিমেন্টও তার পজিশনে থাকে

লিস্ট কম্প্রিহেনশন দিয়ে (ট্রিকি)


result = [
    elem 
    for i, val in enumerate(my_list) 
    for elem in (append_list if i % N == 0 else []) + [val]
]

জেনারেটর ফাংশন (মেমরি ইফিশিয়েন্ট)


def insert_every_nth(source, to_insert, n):
    for i, val in enumerate(source):
        if i % n == 0:
            yield from to_insert
        yield val

result = list(insert_every_nth(my_list, append_list, N))

বিকল্প: স্লাইস অ্যাসাইনমেন্ট (ইন-প্লেস, উল্টা ক্রমে)


# ইন-প্লেস মডিফিকেশন (উল্টা থেকে যেতে হয় যাতে ইন্ডেক্স শিফট না হয়)
for i in range(len(my_list) - 1, -1, -1):
    if i % N == 0:
        my_list[i:i] = append_list  # স্লাইস অ্যাসাইনমেন্ট
# এখন my_list মডিফাইড
  1. পাইথন লিস্টে ইন্ডেক্স এবং ভ্যালু অ্যাক্সেস করা

  2. পাইথনে append() এবং extend() ফাংশন

  3. পাইথন টাপলে এলিমেন্ট অ্যাপেন্ড কীভাবে করবেন?

  4. পাইথনে লিস্টে অবজেক্ট অ্যাপেন্ড করার পদ্ধতি