Python面试真题
一个数组里面有混序的正负数,按照以下要求重新排列:
1、按照正负间隔的顺序排序
2、同一个符号的数相对顺序不变
3、若某一个符号的数较多,按原顺序放在最后。
例如输入:
1, -5, -3, 2, 3, 7, -4, -7, 9, -8, -11, -3, -2
期望输出:
1, -5, 2, -3, 3, -4, 7, -7, 9, -8, -11, -3, -2
解析:
本题主要难点是理解题目需求,不要复杂化题干
考点,列表拼接方法
本题分三种情况考虑: 正数多于负数,正数等于负数,正数少于负数
list1 = [1, -5, -3, 2, 3, 7, -4, -7, 9, -8, -11, -3, -2]
a = [i for i in list1 if i > 0]
b = [i for i in list1 if i < 0]
list2 =[]
if len(a) == len(b):
for i in a:
list2.append(a[i])
list2.append(b[i])
elif len(a) > len(b):
for i in range(len(b)):
list2.append(a[i])
list2.append(b[i])
list2.extend(a[len(b):])
else:
for i in range(len(a)):
list2.append(a[i])
list2.append(b[i])
list2.extend(b[len(a):])
print(list2)
本文介绍了一道Python面试题的解决方案:如何对数组中的正负数进行间隔排序,并保持相同符号数的相对顺序不变。文章通过示例详细解释了实现思路与代码逻辑。

被折叠的 条评论
为什么被折叠?



