python列表练习之插入与排序

今天看到一个python关于列表排序和插入的练习,它的要求是这样的:

  1. 已知列表nums = [3, 1, 25, 10, 15, 6, 8]
  2. 将这个序列从大到小排序
  3. 声明一个变量i,并赋值一个数字,例如 i=7,然后将该变量插入到已排序的列表中合适的位置上,使得该列表依旧满足从大到小排序

然后我打算去试一下,我的思路是这样的:

1、先对列表nums进行排序

nums = [3, 1, 25, 10, 15, 6, 8 ]
nums.sort(reverse=True)

# >>> nums = [25, 15, 10, 8, 6, 3, 1]

2、将该列表进行反向,并赋值给一个新的变量

num_reverse = nums[::-1]
# >>> nums = [1, 3, 6, 8, 10, 15, 25]

3、对两个列表同时遍历,分别将下标对应的值与变量 i 进行判断

def insert_data_to_list(nums, nums_reverse, i):
	for index in range(len(nums)):
		if nums_reverse[index] < i < nums[index]:
			continue
		elif nums_reverse[index] > i:
			nums.insert(len(nums)-index, i)
			return nums
		elif nums[index] < i:
			nums.insert(index, i)
			return nums

4、调用函数insert_data_to_list看看效果

i = 7
nums = insert_data_to_list(nums, nums_reverse, i)
print(nums)
# >>> [25, 15, 10, 8, 7, 6, 3, 1]

这就对变量进行了插入,并且满足了原来从大到小排序的要求

细心的同学会发现,该函数如果执行两次,结果就会错误,因为插入之后,原列表nums的元素发生了改变,但nums_reverse没有发生变化,所以要稍微修改一下

def insert_data_to_list(nums, i):
	nums_reverse = nums[::-1]
	for index in range(len(nums)):
		if nums_reverse[index] < i < nums[index]:
			continue
		elif nums_reverse[index] > i:
			nums.insert(len(nums)-index, i)
			return nums
		elif nums[index] < i:
			nums.insert(index, i)
			return nums

nums = [3, 1, 25, 10, 15, 6, 8 ]
nums.sort(reverse=True)

# 测试一下
for i in [0, 2, 7, 26]:
	nums = insert_data_to_list(nums, i)
	print(i, nums)

""" 输出结果
0 [25, 15, 10, 8, 6, 3, 1, 0]
2 [25, 15, 10, 8, 6, 3, 2, 1, 0]
7 [25, 15, 10, 8, 7, 6, 3, 2, 1, 0]
26 [26, 25, 15, 10, 8, 7, 6, 3, 2, 1, 0]
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值