2016-04-26 104 views
0

我是來自Java背景的python的新手,並試圖從單個數組中創建兩個數組,其中奇數索引放在一個數組中,偶數索引放入另一個數組中。從python中的一個數組創建2個數組

陣列的一個將包含指數法(0,2,4,6,8等) 陣列中的兩個將包含指數法(1,3,5,7,9等)

我的當前的實現是:

for i in range (0, len(originalArray) - 1): 
    if i % 2 == 0: 
     Array1.append(originalArray[i]) 

    if i % 2 == 1: 
     Array2.append(originalArray[i]) 

if len(originalArray) % 2 == 0: 
    Array1.append(originalArray[-1]) 

任何人都可以推薦一個更好的方法來做到這一點? 謝謝。

回答

0

假設您的列表名爲a

part1 = a[::2] 
part2 = a[1::2] 

結果:

>>> a = [1, 2, 3, 4, 5, 6] 
>>> a[::2] 
[1, 3, 5] 
>>> a[1::2] 
[2, 4, 6] 

在Python切片語法list[start:end:step]。使用list[::2],我們從列表中獲取每個第二個元素(偶數個元素)。爲了得到奇怪的元素,我們添加一個到列表開始索引,所以使用list[1::2]

更詳細的解釋可以在這裏找到:python list slices

+0

但是,謝謝,我不是試圖從兩個創建一個數組。這是相反的方式。 – javasaucebiner

+0

恩,對不起,更新了問題 – tobspr

+0

更新了答案以反映你的問題 – tobspr

-1

試試這個:

original_list = [1,2,3,4,5,6,7,8] 
first_list = original_list[0::2] 
second_list = original_list[1::2] 

結果是:

first_list = [1,3,5,7] 
second_list = [2,4,6,8] 
+0

這不提供問題的答案。 – tobspr

+0

你很好,我編輯了我的答案。 – DJeanCar

-1
for element in originalArray: 
    if originalArray.index(element) % 2 = 0: 
     Array1.append(element) 
    else: 
     Array2.append(element) 
+0

更新了我的代碼。 – alpert

0

另一種選擇,而不是Python的,但我錯在可讀性方面:

Array1 = [] 
Array2 = [] 
tmp_array = [Array1, Array2] 
for i in xrange(len(originalArray)): 
    tmp_array[i % 2].append(originalArray[i])