2016-04-26 105 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])