作为一个python初学者刷题过程中常常会有不熟悉的知识,而使用AI刷题极大了提高了我的学习效率与刷题效率,做到练中学。以下是做题过程中利用AI帮助,进行的知识总结
def solution(a: int, b: int) -> int:
numlist = []
while a > 0:
numlist.append(a%10)
a //= 10
length = len(numlist)
finished = False
for i in range(length):
if b >= numlist[i]:
numlist.insert(i,b)
finished = True
break
if(not finished):
numlist.append(b)
result = 0
//将列表中的数字拼接起来
for digit in numlist:
result = result * 10 + digit
return result
if __name__ == '__main__':
print(solution(76543, 4) == 765443)
print(solution(1, 0) == 10)
print(solution(44, 5) == 544)
print(solution(666, 6) == 6666)
-
列表的插入
-
insert()方法-
基本语法:
list.insert(index, element)。其中index是要插入元素的索引位置,element是要插入的元素。 -
示例:
- 假设我们有一个列表
my_list = [1, 3, 4],如果我们想在索引为 1(也就是第二个元素)的位置插入数字 2,可以这样做:
- 假设我们有一个列表
my_list = [1, 3, 4] my_list.insert(1, 2) print(my_list) -
-
输出结果为
[1, 2, 3, 4]。这里需要注意的是,insert()方法会改变原始列表。如果index等于列表的长度,那么元素会被添加到列表的末尾,就相当于append()操作。例如:my_list = [1, 2, 3] my_list.insert(len(my_list), 4) print(my_list) -
输出为
[1, 2, 3, 4]。 -
索引边界情况:
- 如果
index小于 0,元素会被插入到列表的开头。例如:
my_list = [1, 2, 3] my_list.insert(-1, 0) print(my_list) - 如果
-
输出为
[1, 2, 0, 3]。这是因为当index为 - 1 时,实际上是在倒数第二个位置插入元素。 -
如果
index超出了列表长度(大于等于列表长度),元素会被插入到列表的末尾,如前面提到的示例。
-
使用切片拼接实现插入效果
-
基本原理:通过将列表分成两部分,在中间插入元素,然后再拼接起来。
-
示例:
- 还是以
my_list = [1, 3, 4]为例,要在索引为 1 的位置插入 2,可以这样做:
- 还是以
my_list = [1, 3, 4] new_list = my_list[:1] + [2] + my_list[1:] print(new_list) -
-
输出同样是
[1, 2, 3, 4]。这种方法在某些情况下可能更直观,特别是在不希望直接修改原始列表,而是想创建一个新的列表时很有用。不过,对于大型列表来说,切片操作可能会消耗较多的内存和时间,因为它会创建新的列表对象来存储切片后的内容。
-
与其他数据结构插入操作的对比
-
与元组相比,元组是不可变的数据结构,没有
insert()方法。如果要在类似元组的数据结构中插入元素,需要先将元组转换为列表,插入元素后再转换回元组。例如:- 假设有一个元组
my_tuple=(1, 3, 4),要插入数字 2,可以这样做:
- 假设有一个元组
my_tuple = (1, 3, 4) my_list = list(my_tuple) my_list.insert(1, 2) new_tuple = tuple(my_list) print(new_tuple) -
-
输出为
(1, 2, 3, 4)。 -
与集合相比,集合是无序的数据结构,没有索引的概念,所以不能像列表一样在指定索引位置插入元素。集合的
add()方法用于添加元素,但元素的位置是不确定的。例如:- 有一个集合
my_set = {1, 3, 4},使用add()方法添加元素 2:
my_set = {1, 3, 4} my_set.add(2) print(my_set) - 有一个集合
-
输出可能是
{1, 2, 3, 4}(集合是无序的,每次输出的元素顺序可能不同)。
-