简体   繁体   中英

Is there a function to create a list of unique elements in unique index using python?

Is there a way to create a new set of lists of elements, with each element of the original list in a unique index in the following lists?

orginal_list=['r', 'g', 'b', 'y']

output: ['y', 'g', 'r', 'b'],['g', 'y', 'b', 'r'],['r', 'b', 'y', 'g'],['b', 'r', 'g', 'y']
or
output: ['y', 'r', 'b', 'g'],['g', 'y', 'r', 'b'],['r', 'b', 'g', 'y'],['b', 'g', 'y', 'r']
or 
...

I have tried to use iterators.permutations , but this does not fit with the unique index requirement.

Easiest would be to rotate the list. Here is a simple generator function producing all such rotations:

def rots(lst):
    for i in range(len(lst)):
        yield lst[i:] + lst[:i]

>>> list(rots(['r', 'g', 'b', 'y']))
[['r', 'g', 'b', 'y'], 
 ['g', 'b', 'y', 'r'], 
 ['b', 'y', 'r', 'g'], 
 ['y', 'r', 'g', 'b']]

The rotating guarantees that each element actually occurs in each index exactly once.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM