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函数转成字符串就行了