Home > database >  How can I rearrange a set of values into new pattern on python and print results
How can I rearrange a set of values into new pattern on python and print results

Time:10-21

so I will do my best to explain what I'm looking for, at the moment I have a 100 item list that I want to repetitively shuffle using a set pattern to first check if the pattern will eventually bring me back to where I began and 2 to print the result of each loop to a text file.

so using a 3 item list as my example [a,b,c] and the shuffle pattern [3 1 2] where the 3rd item becomes the first. the first item becomes the second and the second item becomes the 3rd on a loop would generate the following patterns

[a,b,c]

[3,1,2]

[c,a,b]

[b,c,a]

[a,b,c]

but I have a list at the moment of 100 items that I need to find every single arrangement for a few different patterns I would like to test out.

does anyone know of a way to do this in python please.

CodePudding user response:

You could use numpy advanced integer indexing if your list contains a numeric type:

import numpy as np

original_list=[1,2,3]
numpy_array = np.array(original_list)

pattern = [2,1,0]

print(numpy_array[pattern])
>>> array([3, 2, 1])

CodePudding user response:

def rearrange(pattern : list,L:list):
    new_list = []
    for i in pattern :
        new_list.append(L[i-1])
    return new_list

print(rearrange([3,1,2],['a','b','c']))

output :

['c', 'a', 'b']

CodePudding user response:

You can define function and call this function multi times like below:

>>> def func(lst, ptr):
...    return [lst[idx-1] for idx in ptr]
 
>>> lst = ['a','b','c']
>>> ptr = [3,1,2]
>>> for _ in range(5):
...    lst = func(lst, ptr)
...    print(lst)

['c', 'a', 'b']
['b', 'c', 'a']
['a', 'b', 'c']
['c', 'a', 'b']
['b', 'c', 'a']

CodePudding user response:

Itertools could be what you need.

import itertools

p = itertools.permutations(['a','b','c', 'd'])

list(p)

Output: [('a', 'b', 'c', 'd'), ('a', 'b', 'd', 'c'), ('a', 'c', 'b', 'd'), ('a', 'c', 'd', 'b'), ('a', 'd', 'b', 'c'), ('a', 'd', 'c', 'b'), ('b', 'a', 'c', 'd'), ('b', 'a', 'd', 'c'), ('b', 'c', 'a', 'd'), ('b', 'c', 'd', 'a'), ('b', 'd', 'a', 'c'), ('b', 'd', 'c', 'a'), ('c', 'a', 'b', 'd'), ('c', 'a', 'd', 'b'), ('c', 'b', 'a', 'd'), ('c', 'b', 'd', 'a'), ('c', 'd', 'a', 'b'), ('c', 'd', 'b', 'a'), ('d', 'a', 'b', 'c'), ('d', 'a', 'c', 'b'), ('d', 'b', 'a', 'c'), ('d', 'b', 'c', 'a'), ('d', 'c', 'a', 'b'), ('d', 'c', 'b', 'a')] ​

  • Related