Skip to content
Related Articles

Related Articles

Python | List Initialization with alternate 0s and 1s

Improve Article
Save Article
  • Last Updated : 25 Nov, 2022
Improve Article
Save Article

The initialization of a list with a single number is a generic problem whose solution has been dealt with many times. But sometimes we require to initialize the list with elements alternatively repeating K no. of times. This has use cases in M.L. or A. I algorithms that require presetting of data in lists. Let’s discuss certain ways in which this problem is solved.

 Method #1: Using list comprehension In this method, we insert elements in the list alternatively for the specific number of times of each element’s occurrence. It takes the remainder of the sum of counts of both occurrences of elements with the particular occurrence of elements for cycle computation. 

Python3




# Python3 code to demonstrate
# to perform cyclic initialization
# using list comprehension
 
# count of 1
count_1 = 4
 
# count of 0
count_0 = 3
 
# total length of list
size = 14
 
# initializing list cyclically
# using list comprehension
test_list = [1 if i % (count_1 + count_0) < count_1
             else 0 for i in range(size)]
 
# printing list after change
print("The list after initializing : " + str(test_list))

Output

The list after initializing : [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0]

  Method #2 : Using itertools.cycle() + itertools.islice() This is the most pythonic way in which we can perform the cyclic initialization. Slice each of the part of list into the allotted element size in a cyclic manner using cycle function. 

Python3




# Python3 code to demonstrate
# to perform cyclic initialization
# using itertools.cycle() + itertools.islice()
import itertools
 
# count of 1
count_1 = 4
 
# count of 0
count_0 = 3
 
# total length of list
size = 16
 
# getting pattern
pattern = [1] * count_1 + [0] * count_0
 
# initializing list cyclically
# using itertools.cycle() + itertools.islice()
test_list = list(itertools.islice(itertools.cycle(pattern), size))
 
# printing list after change
print("The list after initializing : " + str(test_list))

Output

The list after initializing : [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1]

Method #3 : Using *,extend() and slicing

Python3




# Python3 code to demonstrate
# to perform cyclic initialization
# using list comprehension
 
# count of 1
count_1 = 4
 
# count of 0
count_0 = 3
 
# total length of list
size = 14
 
# initializing list cyclically
x = [1]*count_1
y = [0]*count_0
res = []
while(len(res) <= size):
    res.extend(x)
    res.extend(y)
res = res[:size]
# printing list after change
print("The list after initializing : " + str(res))

Output

The list after initializing : [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0]

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!