在python中从一个数组创建2个数组

时间:2016-04-26 18:02:57

标签: python arrays if-statement for-loop

我是来自Java背景的python的新手,我正在尝试从单个数组创建两个数组,其中奇数索引放在一个数组中,偶数索引放在另一个数组中。

数组一将包含索引(0,2,4,6,8等) 数组2将包含索引(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])

有人可以推荐更好的方法吗? 感谢。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

另一个选择,不是pythonic,但我在可读性方面犯了错误:

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

答案 2 :(得分:-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]

答案 3 :(得分:-1)

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