蓝桥小王子单链表-python

m=int(input())
ls=[input().split() for i in range(m)]
lst=[1,2,3,4,5,6,7,8,9,10]
for i in range(len(ls)):
    x = int(ls[i][0])
    index = lst.index(int(ls[i][0]))
    lst.pop(index)
    lst.insert(0, x)
    print(' '.join(map(str,lst)))

这是一道蓝桥竞赛书中的官方题目,接下来是我的解题思路,新手看会有些许压力。

首先先获得整数m,决定获得用户输入的次数,接下来是个列表推导式,用于记录用户的输入,是个二维列表,类似下面写法,只不过简化成一行

然后我新建一个列表,用于每次输出每次列表的值,新手看不懂我说的没关系,重点不在这里,换成别的写法也可以。

列表长度多少循环多少次(当不确定循环多少次时,通过len函数循环相对于的次数),新手做久了跟数组有关的题目就知道为什么了

然后获得整数x,因为是个二维数组所以循环相对应i的索引为0的值(因为样例输入都是一位数字)  上面的ls是这样的:  [[2],[3]]

接下来时本题的重点

这道题要解决的就是怎么把输入指定的数的数排到第一位

我在这边举个小例子,假设我们要把2插入第一位

可以看到输出的值是1,1,3,4

为什么是1呢?因为此时的index是索引的值(1),而不是实际的值(2),所以插入的值是索引(1),那么我们就需要把循环后得到的数分别不同赋值给索引和插入的值,不然值会出问题

最后因为输出要去方括号所以我们只要通过join函数转成字符串就行了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值