思路:
将偶数和奇数分别放在even和odd列表中,然后利用zip()和chain()函数,将两个列表交叉组合在一起。
重点是利用的zip函数和chain函数。
zip():
注意:zip() 返回的是一个元组对象。如需展示列表,需手动 list() 转换。
zip(*) 与zip()相反,相当于解压
示例:
chain():
使用 chain() 的一个常见场景是当你想对不同的集合中所有元素执行某些操作的时候。
注意在使用之前要导入: from itertools import chain
示例:
from itertools import chain
a = [1, 2, 3, 4]
b = ['x', 'y', 'z']
for x in chain(a, b):
print(x)
1
2
3
4
x
y
z
>>>
from itertools import chain
class Solution(object):
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
num = []
odd = [] #放奇数
even = [] #放偶数
for i in A:
if i%2 == 0:
even.append(i)
else:
odd.append(i)
return list(chain(*zip(even,odd)))
生成与A等长的全零列表res,利用两个游标,一个用来给res填充奇数,一个用来填充偶数。
class Solution(object):
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
res = [0 for _ in range(len(A))]
cur1,cur2 = 0,0
for i in A:
if i%2 == 0:
res[2*cur1] = i
cur1+=1
else:
res[2*cur2+1] = i
cur2+=1
return res