Python 读入一个自然数列表,把所有的奇数移动到所有偶数的前面。保持奇数或者偶数的相对顺序不变。打印结果列表。
时间: 2024-04-29 22:22:43 浏览: 15
可以使用两个指针,一个指向列表的开头,一个指向结尾。遍历列表,如果发现当前数是奇数,则将它与开头指针指向的数交换位置,并将开头指针向后移动一位;如果当前数是偶数,则将它与结尾指针指向的数交换位置,并将结尾指针向前移动一位。直到开头指针和结尾指针相遇,遍历结束。
以下是示例代码:
```
nums = list(map(int, input().split()))
left = 0
right = len(nums) - 1
while left < right:
if nums[left] % 2 == 0 and nums[right] % 2 == 1:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
elif nums[left] % 2 == 1:
left += 1
elif nums[right] % 2 == 0:
right -= 1
print(nums)
```
相关问题
python输入一个自然数,判断它是奇数还是偶数
可以使用取模运算符(%)来判断一个自然数是奇数还是偶数。如果一个数除以2的余数为0,则它是偶数;如果余数为1,则它是奇数。
下面是使用Python编写的代码:
```
num = int(input("请输入一个自然数:"))
if num % 2 == 0:
print(num, "是偶数")
else:
print(num, "是奇数")
```
首先,使用`input()`函数获取用户输入的自然数,并使用`int()`函数将输入的字符串转换为整数类型。然后,使用`if`语句和取模运算符判断输入的数是奇数还是偶数,并输出相应的提示信息。
python对一个列表中的偶数下标的元素进行降序排列奇数下标的元素不变
可以使用切片和sorted函数来实现该功能。
代码实现如下:
```python
lst = [3, 8, 1, 6, 5, 4]
even_lst = sorted(lst[::2], reverse=True) # 对偶数下标元素进行降序排列
result = [even_lst[i // 2] if i % 2 == 0 else lst[i] for i in range(len(lst))] # 组合结果
print(result) # 输出 [8, 3, 6, 1, 5, 4]
```
首先使用切片 `lst[::2]` 获取到列表中的偶数下标的元素,然后对其进行降序排列,并将结果存入 `even_lst` 中。
接着使用列表推导式,遍历原列表中的每个元素,如果该元素的下标是偶数,则从 `even_lst` 中取出对应的元素,否则直接使用原列表中的该元素。最后将得到的所有元素组成一个新的列表 `result` 并输出即可。