怎么使用Python栈和数列实现将数组中所有偶数位值移到奇数位前

题目 3: 有一个整数数组 a,设计一个算法将所有偶数为元素移动到所有奇数位元素的前面,要求它们的相对次序不改变。例如,a={1,2,3,4,5,6,7,8},移动后a={2,4,6,8,1,3,5,7}

思路:建立两个队列,先将所有奇数位元素进队列 1,将所有偶数位元素进队列2,再将队列 2 中元素依次出队放入 a,将队列 1 中元素依次出队放入 a。

你题目的解答代码如下:

a = list(map(int,input().split()))
q1 = []
q2 = []
for v in a:
    if v%2==0:
        q1.append(v)
    else:
        q2.append(v)
a = q1+q2
print(a)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

非要用队列吗?直接推导式行不?
a=[1,2,3,4,5,6,7,8]

a = [i for i in a if i % 2 == 0] + [i for i in a if i % 2 == 1]
print(a)

#双端队列:
from collections import deque

a=[1,2,3,4,5,6,7,8]

a1 = deque()
a2 = deque()

while a:
    t = a.pop()
    if t % 2 == 1:
        a1.appendleft(t)
    else:
        a2.appendleft(t)
        
while a2 :
    a.append(a2.popleft())
while a1 :
    a.append(a1.popleft())    
print(a)