Sto usando python per ordinare alcuni numeri. Vorrei creare una funzione che mi permetta di inserire un valore (4, 8, 16, 32, 64, ecc.), Creare una serie di numeri e riorganizzare la loro sequenza.Iterate attraverso un numero dinamico di loop for (Python)
Sono figure che dettaglio come determinare la sequenza di valore = 4 e 8.
Per valore = 4 matrice (x = [0, 1, 2, 3]) dovrebbe essere diviso aggiunto in due ([0,1] e [2,3]) e poi combinati in base al primo numero in ciascun array ([0, 2, 1, 3]).
Per valore = 8 della matrice (x = [0, 1, 2, 3, 4, 5, 6, 7]) dovrebbe essere diviso in due ([0, 1, 2, 3 ] e [4, 5, 6, 7]). Entrambi gli array devono essere nuovamente divisi in due ([0, 1, 2, 3] in [0,1] e [2,3] e [4, 5, 6, 7] in [4,5] e [6, 7]). Quindi gli array dovrebbero essere combinati in base al primo numero di ciascun array e alla sequenza del secondo set di matrici ([0, 4, 2, 6, 1, 5, 3, 7]).
Non so come gestire la ricorsione (nidificato in modo dinamico per i cicli). Sto provando a passare in rassegna ogni brach che è stato creato dividendo la matrice. Ho esaminato itertools e ricorsione (Function with varying number of For Loops (python)), ma non sono riuscito a farlo funzionare. Sotto, ho aggiunto il codice per illustrare il mio approccio fino ad ora.
Qualsiasi aiuto è molto apprezzato. Sono anche aperto ad altre idee per determinare la sequenza.
Sto usando python 2.7.6 e numpy.
Codice:
import numpy
value = 4
a = []
x = numpy.arange(value)
y = numpy.array_split(x, 2)
for i in range(2):
for j in y:
a.append(j.tolist()[i])
print(a)
uscita:
[0, 2, 1, 3]
Codice:
import numpy
value = 8
a = []
x = numpy.arange(value)
y = numpy.array_split(x, 2)
for i in range(2):
for h in range(2):
for j in y:
z = numpy.array_split(j, 2)
a.append(z[h][i])
print(a)
uscita:
[0, 4, 2, 6, 1, 5, 3, 7]
L'uscita per valore = 16 deve essere [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7 15].
Avete bisogno una soluzione in numpy? Questo potrebbe essere fatto in plain python, penso che sia –
Direi che quello di cui hai bisogno è prendere il modulo binario dei numeri e ordinarli in modo antialcolico – Ilja