python面试题(基础)(四)

本文介绍了Python中的排序算法、浮点数处理、浅拷贝与深拷贝的区别、生成器表达式、字符串操作、列表排序、字典排序、zip函数应用以及参数传递的概念。
摘要由CSDN通过智能技术生成

面试题

  1. 写一个排序
def sort_list(arr):
    if len(arr) <= 1:
        return arr
    privot = arr[len(arr) // 2]
    left = [x for x in arr if x < privot]
    middle = [x for x in arr if x == privot]
    right = [x for x in arr if x > privot]
    return sort_list(left) + middle + sort_list(right)
a = [2,3,5,4,9,6]
d = sort_list(a)
print(d)
  1. 保留浮点数两位小数
a = 1.021345
d = round(a,2)
print("%.02f"%a)
print(d)
  1. python 中的copy和deepcopy的区别
浅拷贝:
1.copy函数创建一个新的对象,但他不会递归复制对象中的内部对象,即他只复制对象本身,而不复制对象内部的对象。因此,原始对象和复制对象都会共享内部的子对象
2.浅拷贝适用于原始对象中包含的子对象不会被修改的情况,或者只需要复制对象本身而不是器内部元素时候
3.对于符合对象(例如列表字典等),浅拷贝会创建一个新的复合对象类型,但是复制的内容是对元对象中子对象的引用
深拷贝:
1。deepcopy函数创建一个新的对象,同时递归复制对象中的所有内部对象。因此原始对象和复制对象完全独立,对复制对象的修改不会影响原始对象。
2.深拷贝使用于原始对象中包含的子对象可能会被修改的情况,或者需要完全对立复制一个对象及其内部元素的时候。
3.对于符合对象,深拷贝不仅仅复制符合对象本身,也复制其中的元素,创建元素的完整副本
  1. 将[i for i in range(3)]改为生成器
a = [i for i in range(3)]
b = (i for i in range(3))
print(a)
print(b)
# 输出结果
[0, 1, 2]
<generator object <genexpr> at 0x0000028A966A0CC8> 
  1. 去除字符串种的空格
a = " asd "
a.strip()
a.replace(" ", "")

6.sort和sorted的区别
sort在list的基础上修改无返回值,sorted返回新的list

a = [1,213,12,541,24,124,52,35,12,3]
a.sort()
print(a)
b = [1,213,12,541,24,124,52,35,12,3]
b = sorted(b)
print(b)
  1. 对list进行排序,使用lambda进行从小到大排序
b = [1,213,12,541,24,124,52,35,12,3]
d = sorted(b, key=lambda x:x )
  1. 列表嵌套字典,分别根据年龄和姓名进行排序
f = [{'name': 'df', 'age': 23}, {'name': 'll', 'age': 54}, {'name': 'wa', 'age': 17}, {'name': 'zs', 'age': 19}]
d = sorted(f, key=lambda x:x['name'])
print(d)
d = sorted(f, key=lambda x:x['age'])
print(d)
  1. 用zip根据字典键排序
dic = {"name":"zs","sex":"man","city":"bj"}
foo = zip(dic.keys(),dic.values())
foo = [i for i in foo]
print("字典转成列表嵌套元组",foo)
b = sorted(foo,key= lambda x:x[0])
print("根据键排序",b)
new_dic = {i[0]:i[1] for i in b}
print("字典推导式构造新字典",new_dic)
  1. 使用re的split进行切分字符串
import re 
s="info:xiaoZhang 33 shandong"
res = re.split(":| ",s )
print(res)

10.python传参数是传值还是传址?
在python种,传递参数可以看作是传对象引用,这种方式即不同于传值也不同于传址的传统概念,而是介于两者之间的一种方式。理解这一点,关键是要明天白在python种,所有的东西都是对象,变量是对对象的应用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值