• python面试问题集锦


    1.foo = [{"name":"zs","age":19},{"name":"ll","age":54},

    {"name":"wa","age":17},{"name":"df","age":23}]

    根据age进行排序

     

    2.foo = [{"name":"zs","age":19},{"name":"ll","age":54},

    {"name":"wa","age":17},{"name":"df","age":23}]

    根据age进行排序(倒序)

     

    3.foo = [("zs",19),("11",54),("wa",17),(df,23)]

    根据每个元组内的数字逆序排序

     

    4.使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小

     

    5.两种去空格的方法replace()、strip()

    replace(旧字符,新字符)、strip()默认删除前后端空格,strip("0")删除前后端的字符0

    6.python中find(),count(),index()函数的用法

    ①count()函数用来计数,计算字符串、列表、元组中出现某些元素的格式,aa.count("字符串/列表/元组", start,end)或str.count("字符串/列表/元组")

    ②index() 函数用于从列表、字符串中找出某个值第一个匹配项的索引位置。语法:list.index(x[, start[, end]])

    ③find() 函数检测字符串中是否包含另一个字符串,如果包含则返回初始索引位置,也就是第一次发现另一个字符串的位置,否则返回-1。str.find(strf, start=0, end=len(string))

    7.进制转换

    二进制转换成10进制  int("1101", 2)

    10进制转换成2进制  bin(13)

    8.迭代器和生成器的区别和优缺点?

    迭代器:把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 

    生成器:使用了 yield 的函数被称为生成器(generator)

    优点:Python中使用了迭代的概念,是因为当需要循环遍历一个较大的对象时,传统的内存载入方式会消耗大量的内存,不如需要时读取一个元素的方式更为经济快捷。

    原理: 

    迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。

    一边生成一边计算后面元素的机制,称为生成器,生成器里面保存的是算法,只有需要用到才会计算后面的值

    简单的说就是在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。

    迭代器和生成器区别主要在于生成器可以做迭代器的事情,生成器是一种特殊的迭代器


    9.请将[i for i in range(10)]改成生成器

    直接用小括号括起来就行,(i for i in range(10))

    10. Python中,*arg 和 *kwarg 分别代表什么含义,都有哪些作用?

    *arg是可变参数,入参在函数中是一个元组,预先不知道用户会传多少个参数的时候使用

    **kwargs是可变关键字参数,入参在函数中是一个字典,预先不知道用户会传多少个关键字参数的时候使用


    11. python中list(列表)和tuple(元组)的区别

    ①列表中元素是可变的,元组中元素是不可变的

    ②相同点是都可通过索引去查询

    ③内存分配机制不一样,python内存机制分配给列表的内存空间往往是那种容易变更,且内存块比较小的内存空间,列表则不一样

    ④用途不一样,元组一般用来存放不变的数据,如返回值,枚举值等,作用是为了保护数据。

    12. python中list(列表)和set(集合)的区别

    ①set中的元素不能重复,list中的元素可以重复

    ②set中元素无序,list中元素是有序的

    13.python元组的使用场景

    ①让列表不可以被修改,保护数据

    ②作为函数返回值


    14.Python的字典用什么实现的

    哈希表

    15.python内存管理机制

    垃圾回收机制:

    ①引用计数:为每一个对象维护一个引用计数器,当一个对象的引用被创建或者复制时,(对象的引用)计数器+1,当一个对象的引用被销毁时,计数器的值-1,当计数器的值为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉;

    ②标记清除:基于追踪回收技术实现的回收算法,第一阶段将所有对象打上标记,第二阶段将未打上标记的非活动对象内存回收;

    ②分代回收:基于标记清除,内存分为三代,青年代、中年代和老年代三个链表,新创建的对象放在青年代,链表数量达到上限后将没有被标记的对象回收,有标记的对象会被移到中年代链表,同样中年代链表数量达到上限后将没有被标记的对象回收,有标记的就被移到老年代。

    内存池机制:

    为了避免频繁的申请和释放内存,python的内置数据类型,数值、字符串 。

    ①对于 -5 ~ 257 范围内的数值,创建之后python会把其加入到缓存池中,当再次使用时,则直接从缓存池中返回,而不需要重新申请内存,如果超出了这个范围的数值,则每次都需要申请内存。

    ②字符串对象仅仅会保存一份,放在一个共用的字符串储蓄池中,并且是不可更改的,这也决定了字符串是不可变对象。

    16.python中字典和json的区别

    ①字典是一种数据结构,json是一种数据类型,或者说是一种字符串

    ②字典中可以包含元组等数据,但是json中不能有元组等数据

    ③字典的key和value可以使用单引号和双引号,json只能使用双引号

    ④字典和json可以通过json.loads()和json.dumps()相互转换

    ⑤字典中的value不能是null,但是json中的value可以是null

    17.python常用的包有哪些

    ①http请求的包request

    ②字典和json之间进行序列化的包json

    ③时间模块time和datetime

    ④日志模块logging

    ⑤正则表达式模块re

    18. Python的高阶函数有哪些,分别都有什么作用?

    高阶函数就是一个函数可以把其他的函数当作参数。


    如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

    咱们下期见!答案获取方式:已赞 已评 已关~

    学习更多知识与技巧,关注与私信博主(03)


     

  • 相关阅读:
    Python科学计算库练习题
    上门预约服务类的App功能详解
    day49 ARM
    【Detectron2】代码库学习-1. 概览
    SpringCloudAlibaba【二】整合Nacos
    MyBatis执行SQL语句的两种方式
    Pyspark读写csv,txt,json,xlsx,xml,avro等文件
    java每日一题:static与final的区别
    端到端图像压缩《Checkerboard Context Model for Efficient Learned Image Compression》
    集成学习算法
  • 原文地址:https://blog.csdn.net/m0_72444380/article/details/126770608