Home > Software design >  How to reset a list and start populate it again using an iterator
How to reset a list and start populate it again using an iterator

Time:10-25

I have the code below working.

What I need: After I get the two lists with 10 elements each my iterator still have 80 elements, so I need to repeat this process more 4 times but I want to reset both lists at each loop.

I dont want to create arr3, arr4...etc because the original array has more than 100000 elements.

How can I repeat this loop reseting the lists?

# creating an array with 100 samples
array = np.random.rand(100)

# making the array an iterator
iter_array = iter(array)

# List to store first 10 elements
arr1=[]


# List to store next 10 elements
arr2=[]

# First Iteration to get 2 list of 10 elements each
for _ in itertools.repeat(None, 10):
    a =next(iter_array)
    arr.append(a)
    b=next(iter_array)
    arr2.append(b)

CodePudding user response:

You can store your result in a list-of_lists:

import numpy as np
import itertools

# creating an array with 100 samples
array = np.random.rand(100)

# making the array an iterator
iter_array = iter(array)

# List to store first 10 elements
n = 2
result = [[] for _ in range(n)]

# First Iteration to get 2 list of 10 elements each
for _ in itertools.repeat(None, 10):
    for i in range(n):
        result[i].append(next(iter_array))

print(f"{result = }")

You can change the n-value to store 8 arrays or more.

  • Related