Python编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
时间: 2023-05-10 19:55:50 浏览: 139
可以使用双指针法,一个指针从前往后找偶数,一个指针从后往前找奇数,然后交换它们的位置。代码如下:
```
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
```
这个函数接受一个整数列表作为参数,返回一个新的列表,其中奇数在前偶数在后,且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
相关问题
编写一个 Python 函数程序,获取用户输入的正整数n,输出返回的奇数和偶数列表
以下是一个获取用户输入的正整数n,并输出返回的奇数和偶数列表的Python函数的例子:
```python
def even_odd_lists(n):
even_list = []
odd_list = []
for i in range(1, n+1):
if i % 2 == 0:
even_list.append(i)
else:
odd_list.append(i)
return even_list, odd_list
```
在这个示例中,我们定义了一个名为`even_odd_lists`的函数,它接受一个正整数n作为参数。在函数中,我们创建了两个空列表,`even_list`和`odd_list`,并使用一个循环遍历1到n的所有数字。如果数字是偶数,我们将其添加到`even_list`中,否则将它添加到`odd_list`中。最后,我们使用`return`语句返回这两个列表作为函数的输出。
你可以调用这个函数并传入一个正整数n,它将返回一个包含所有偶数的列表和一个包含所有奇数的列表。例如:
```python
even, odd = even_odd_lists(10)
print("偶数列表:", even)
print("奇数列表:", odd)
```
输出:
```
偶数列表: [2, 4, 6, 8, 10]
奇数列表: [1, 3, 5, 7, 9]
```
编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变。
可以使用两个指针,一个指向列表的开头,一个指向列表的结尾。遍历列表,如果指向开头的指针指向的数是奇数,则将其加入新列表的开头,并将指针向后移动一位;如果指向结尾的指针指向的数是偶数,则将其加入新列表的结尾,并将指针向前移动一位;否则,将指针向前或向后移动一位。直到两个指针相遇为止。最后得到的新列表就是符合要求的列表。
具体实现可以参考以下代码:
```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]`。