算法简单面试题一

1、深拷贝和浅拷贝

def change_val(l, num, s):
    l[0] = 100 # 列表是变的
    num = 100 # 数字也变的
    s = "world" # 字符串不变的
my_l = [1, 2, 3]
my_num = 1
my_s = "hello"
change_val(my_l, my_num, my_s)
print(my_l)
print(my_num)
print(my_s)
# 输出[100,2,3]
# 输出1
# 输出"hello"

# 浅拷贝:
# b=a、b=a.copy()
# 深拷贝:
# import copy
# b = copy.deepcopy(a)
# 深拷贝复制完得到的新对象与旧对象没关系
# 浅拷贝复制完得到的可变类型在原对象改变时会被改变,不可变类型则不会

2、排序,先按第二个元素排递增排序,再按第一个元素递减排序

# a是一个由元组构成的列表,需要用到参数key,也就是关键词,
# lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列表中的一个元素
# a=[(2, -1), (1, 3), (1, 2), (0, 1), (2, -2), (3, 0), (2, 0), (-1, 0)]

# 方法一
sorted(a,key=lambda x:x[1]) # 默认是递增
sorted(a,key=lambda x:x[0],reverse=True) # 反过来是递减
print(a)
# 结果为[(2, -2), (2, -1), (3, 0), (2, 0), (-1, 0), (0, 1), (1, 2), (1, 3)]

# 方法二
a.sort(key=lambda x: x[0], reverse=True)  
a.sort(key=lambda x: x[1])  
print(a)
# 结果为[(2, -2), (2, -1), (3, 0), (2, 0), (-1, 0), (0, 1), (1, 2), (1, 3)]

3、列表生成时生成一个4行3列的矩阵,元素均为0

array = [[0]*3 for i in range(4)]
print(array)
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

4、找不同

l = [x * x for x in range(10)] # 生成列表
m = (x * x for x in range(10)) # 生成迭代器
print(l)
print(m)
print(next(m)) # 可以将其值取出来

猜你喜欢

转载自blog.csdn.net/weixin_42630613/article/details/107835841