python蓝桥-17614野兽先辈移除列表

因为本人是中职生,马上就要考试了,所以我更新文章不间断,感谢各位粉丝的支持,希望我的文章能帮助到你你

先看题目

这道题目不是很难,我不小心掉坑了,我解释一下题目是个什么意思:

第一行就是输入一共有几个数,也就是题目所说的大小

剩下的两行就是给你两组数,上面的就是一组数,下面的数是一组索引,用于删除上面的数

接下来我会给大家看我的正确和错误的做法

正确做法:

n = int(input())
ls = [int(i) for i in input().split()]
ls_delete = [int(i) for i in input().split()]
s = []

for i in ls_delete:
    # 由于列表索引从0开始,所以需要减去1
    index = i - 1
    # 移除元素并添加到s列表中
    s.append(ls.pop(index))

# 输出被移除的元素,由于是逆序添加到s列表中的,所以直接输出s列表
print(*s)

其实看到这里你拿我的这个代码去复制到蓝桥oj就可以过了,现在我讲一下我是怎么错的(如果你感兴趣看的话,你需要有一定的基础,不然可能跟不上我的表达意思)

错误做法:

n=int(input())
ls=[int(i) for i in input().split()]
ls_delete=[int(i) for i in input().split()]
s=[]
for i in range(n):
    if ls_delete[i]<len(ls):
       x=ls.pop(ls_delete[i])
       s.append(x)
    else:
        index=ls_delete[i]-len(ls)
        x=ls.pop(index)
        s.append(x)
print(*s[::-1])

1、首先先获得n,这个时候通过列表推导式继续获得两组数(题目中的两组数,ls是一组数,ls_delete是要删除的索引,并且新建一个列表s)

2、然后根据n的大小进行相应的循环,如果删除的索引小于ls的长度(这是因为每次删除ls的元素,ls的长度都会减少,万一索引的值大于ls的长度会报错) ,那么在ls中把索引值给删掉,并且在s中添加这个删掉的值,这步考虑到最后输出要倒着输出所以我建了一个列表

3、如果索引的值大于ls的长度,那么就先把索引值减去ls的长度并赋值给index,然后在ls中删除index(也就是要删除的索引),然后也添加到s中

4、最后反转打印输出,*是用于去掉两边的方括号(当然官方解释不是这样,我只是图方便)

这个例子能达到题目要求的效果可以检测不过,为什么呢?因为我题目看错了,我删除的索引是编程语言的索引(从0开始),我以为只要根据下面列表的索引删除上面对应的数,题目实际要求删除的是位置(现实中从1开始数的)!不是索引,所以逻辑上没问题,但是出了这种小毛病。

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值