编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变。
时间: 2023-04-22 14:03:34 浏览: 85
可以使用两个指针,一个指向列表的开头,一个指向列表的结尾。遍历列表,如果指向开头的指针指向的数是奇数,则将其加入新列表的开头,并将指针向后移动一位;如果指向结尾的指针指向的数是偶数,则将其加入新列表的结尾,并将指针向前移动一位;否则,将指针向前或向后移动一位。直到两个指针相遇为止。最后得到的新列表就是符合要求的列表。
具体实现可以参考以下代码:
```python
def sort_list(lst):
new_lst = []
left, right = , len(lst) - 1
while left <= right:
if lst[left] % 2 == 1:
new_lst.insert(, lst[left])
left += 1
elif lst[right] % 2 == :
new_lst.append(lst[right])
right -= 1
else:
left += 1
right -= 1
return new_lst
```
例如,输入列表 `[1, 2, 3, 4, 5, 6, 7, 8, 9]`,输出新列表 `[1, 3, 5, 7, 9, 8, 6, 4, 2]`。
相关问题
编写一个python程序,2、编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间相对顺序不变,偶数之间的相对顺序也不变
你可以使用Python的列表推导式和条件判断来实现这个功能。下面是一个示例程序:
```python
def separate_odd_even(numbers):
odd_numbers = [num for num in numbers if num % 2 != 0]
even_numbers = [num for num in numbers if num % 2 == 0]
# 确保奇数列表按原顺序排列,如果偶数多于奇数,则填充剩余位置
combined_list = odd_numbers + ([None] * (len(even_numbers) - len(odd_numbers))) + even_numbers
return combined_list
# 示例输入
input_list = list(map(int, input("请输入一个包含若干整数的列表,以空格分隔:").split()))
output_list = separate_odd_even(input_list)
print(f"新列表: {output_list}")
Python编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
可以使用双指针法,一个指针从前往后找偶数,一个指针从后往前找奇数,然后交换它们的位置。代码如下:
```
def odd_even_list(nums):
left, right = 0, len(nums) - 1
while left < right:
while left < right and nums[left] % 2 == 1:
left += 1
while left < right and nums[right] % 2 == 0:
right -= 1
nums[left], nums[right] = nums[right], nums[left]
return nums
```
这个函数接受一个整数列表作为参数,返回一个新的列表,其中奇数在前偶数在后,且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
阅读全文