Skip to content
Related Articles
Open in App
Not now

Related Articles

Python | Print list elements in circular range

Improve Article
Save Article
  • Last Updated : 30 Dec, 2022
Improve Article
Save Article

Given a list of elements, the task is to print element in group of k till n-iteration in circular range. Examples: 

Input: list = [1, 2, 3, 4, 5, 6, 7], k = 3, n =10
Output: 
[1, 2, 3]
[4, 5, 6]
[7, 1, 2]
[3, 4, 5]
[6, 7, 1]
[2, 3, 4]
[5, 6, 7]
[1, 2, 3]
[4, 5, 6]
[7, 1, 2]

Input: list = [10, 20, 30, 40, 50, 60, 70], k = 4, n = 5
Output: 
[10, 20, 30, 40]
[50, 60, 70, 10]
[20, 30, 40, 50]
[60, 70, 10, 20]
[30, 40, 50, 60]

  We can use itertools with zip to do this task. Example #1: 

Python3




# Python code to print element in group
# of 5 till 9 iteration in circular range.
 
# Importing
from itertools import cycle
 
# list initialization
List = [90, 99, 192, 0, 43, 55]
 
# Defining no of iterations
n = 9
 
# Defining no of grouping
k = 5
 
for index, *ans in zip(range(n), *[cycle(List)] * k):
    # printing ans
    print(ans)

Output:

[90, 99, 192, 0, 43]
[55, 90, 99, 192, 0]
[43, 55, 90, 99, 192]
[0, 43, 55, 90, 99]
[192, 0, 43, 55, 90]
[99, 192, 0, 43, 55]
[90, 99, 192, 0, 43]
[55, 90, 99, 192, 0]
[43, 55, 90, 99, 192]

  Example #2: 

Python3




# Python code to print element in group
# of 6 till 4 iteration in circular range.
 
# Importing
from itertools import cycle
 
# list initialization
List = ['Geeks', 'for', 'geeks', 'is', 'portal']
 
# Defining no of iterations
n = 4
 
# Defining no of grouping
k = 6
 
for index, *ans in zip(range(n), *[cycle(List)] * k):
    # printing ans
    print(ans)

Output:

['Geeks', 'for', 'geeks', 'is', 'portal', 'Geeks']
['for', 'geeks', 'is', 'portal', 'Geeks', 'for']
['geeks', 'is', 'portal', 'Geeks', 'for', 'geeks']
['is', 'portal', 'Geeks', 'for', 'geeks', 'is']

Example #3:  Using slicing

This approach works by calculating the start and end indices for each iteration using the modulus operator to ensure that the indices wrap around to the beginning of the list when they exceed the length of the list. 

Python3




def print_circular_range(lst, k, n):
    for i in range(n):
        start = i * k % len(lst)
        end = (start + k) % len(lst)
        if end > start:
            print(lst[start:end])
        else:
            print(lst[start:] + lst[:end])
 
# Example usage
lst = [1, 2, 3, 4, 5, 6, 7]
print_circular_range(lst, 3, 10)
#This code is contributed by Edula Vinay Kumar Reddy

Output

[1, 2, 3]
[4, 5, 6]
[7, 1, 2]
[3, 4, 5]
[6, 7, 1]
[2, 3, 4]
[5, 6, 7]
[1, 2, 3]
[4, 5, 6]
[7, 1, 2]

Time complexity: O(n)

Auxiliary Space: O(1)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!