我正在使用python對一些數字進行排序。我想創建一個函數,它允許我輸入一個值(4,8,16,32,64等),創建一個數組數組,並重新排列它們的序列。通過動態循環迭代(Python)
我已經添加數字如何確定值= 4的序列,其細節和8
對於值= 4陣列(X = [0,1,2,3])應當被拆分在兩個([0,1]和[2,3])中,然後根據每個數組中的第一個數字([0,2,1,3])進行組合。
對於值= 8陣列(X = [0,1,2,3,4,5,6,7])應被分成兩個([0,1,2,3 ]和[4,5,6,7])。兩個數組應該再次分成兩部分([0,1,2,3]分爲[0,1]和[2,3]和[4,5,6,7]分爲[4,5]和[6, 7])。然後根據每個數組中的第一個數字和第二組數組的順序([0,4,2,6,1,5,3,7])組合數組。
我不知道如何處理遞歸(動態嵌套的循環)。我試圖循環通過拆分數組創建的每個布爾。我研究過itertools和遞歸(Function with varying number of For Loops (python)),但我無法使它工作。下面,我添加了代碼來說明迄今爲止我的方法。
任何幫助,非常感謝。我也接受其他想法來確定序列。
我使用python 2.7.6和numpy。
代碼:
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)
輸出:
[0, 2, 1, 3]
代碼:
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)
輸出:
[0, 4, 2, 6, 1, 5, 3, 7]
value = 16的輸出應該是[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15]。
你需要numpy的解決方案?這可以用普通的python完成,我認爲 –
我想說的是,你需要的是採取數字的二進制形式並對其進行antialphabetically排序 – Ilja