我是来自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])
有人可以推荐更好的方法吗? 感谢。
答案 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)