100个python经典面试题详解(新版)

应老粉要求,每晚加餐一个最新面试题

包括Python面试中常见的问题,涵盖列表、元组、字符串插值、比较操作符、装饰器、类与对象、函数调用方式、数据结构操作、序列化、数据处理函数等多个方面。

旨在帮助数据科学家和软件工程师准备面试或提升Python技能。

1、Python面试题解析:列表(list)和元组(tuple)的区别

这道题是Python面试中的基础题,几乎所有Python面试都会涉及到。考察的是对Python基本数据结构的理解和掌握程度。

难度:⭐ (容易)

考点: 可变性、内存效率、使用场景

案例 & 解释:

  • 可变性: 列表是可变的,元组是不可变的。

    列表可变

    my_list = [1, 2, 3]
    my_list[0] = 4
    print(my_list) # 输出: [4, 2, 3]

    元组不可变

    my_tuple = (1, 2, 3)

    my_tuple[0] = 4 # 这行会报错:TypeError: 'tuple' object does not support item assignment

  • 内存效率: 元组比列表更节省内存。因为元组是不可变的,Python解释器可以对其进行一些优化。

  • 使用场景:

1、当你需要一个可变的序列时,使用列表。例如,存储用户输入的数据。

2、当你需要一个不可变的序列时,使用元组。例如,表示一个点的坐标。函数返回多个值时,通常也使用元组。

相同点:

  • 都属于序列类型,可以使用索引访问元素。

  • 都可以存储不同类型的数据。

  • 都支持切片操作。

  • 都可以使用 len() 函数获取长度。

  • 都可以使用迭代器进行遍历。

区别总结:

注意事项:

  • 创建只有一个元素的元组时,需要在元素后面加一个逗号,例如 my_tuple = (1,)。否则会被解释器认为是普通的数值或表达式。

  • 虽然元组本身是不可变的,但如果元组中包含可变对象(例如列表),那么这些可变对象仍然可以被修改。

拓展知识:

  • 元组的不可变性指的是元组中每个元素的内存地址不可变,而不是元素本身不可变。 如果元组中的元素是可变对象(例如列表),那么可以通过修改列表的内容来间接修改元组。

  • 元组可以用作字典的键,而列表不行。因为字典的键必须是不可变的。namedtuple: collections 模块中的 namedtuple 可以创建具有命名字段的元组,提高代码可读性。

    from collections import namedtuple

    Point = namedtuple('Point', ['x', 'y'])
    p = Point(1, 2)
    print(p.x) # 输出: 1
    print(p.y) # 输出: 2

通过以上分析,相信你对列表和元组的区别有了更全面的理解,能够在面试中从容应对这个问题。

相关推荐
deng-c-f3 分钟前
C/C++内置库函数(3):future、promise的用法
c语言·开发语言·c++
2501_921649493 分钟前
亚太股票数据API:日股、韩股、新加坡股票、印尼股票市场实时行情,实时数据API-python
开发语言·后端·python·websocket·金融
Hello.Reader5 分钟前
用 Python 跑通第一个 Flink ML 项目KMeans 聚类从本地到集群实战
python·flink·kmeans
Wiktok8 分钟前
【WIT】解决导入pywinauto相关库会导致程序UI界面(tkinter/pyside6)浏览文件等操作卡住问题
python·ui·pywinauto
chaodaibing8 分钟前
【Java】一个批量更新插入数据到MySQL的工具类
java·开发语言·mysql
在坚持一下我可没意见11 分钟前
Spring 后端安全双剑(上篇):JWT 无状态认证 + 密码加盐加密实战
java·服务器·开发语言·spring boot·后端·安全·spring
乾元25 分钟前
从命令行到自动诊断:构建 AI 驱动的故障树与交互式排障机器人引言
运维·开发语言·网络·人工智能·华为·自动化
deng-c-f29 分钟前
C/C++内置库函数(6):C++中类什么时候使用静态变量
开发语言·c++
2301_7890156233 分钟前
C++:模板进阶
c语言·开发语言·汇编·c++
互亿无线明明33 分钟前
在 Go 项目中集成国际短信能力:从接口调试到生产环境的最佳实践
开发语言·windows·git·后端·golang·pycharm·eclipse