Python常见面试题的详解6
1. 按字典 value 值排序
- 要点:对于给定字典,使用
sorted()函数结合items()方法,依据value进行排序,也可以定义一个通用函数,支持按value升序或降序排序。 - 示例:
python
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 对字典 d 按值排序,lambda 函数指定排序依据为元素的第二个值(即 value)
sorted_d = dict(sorted(d.items(), key=lambda item: item[1]))
print(sorted_d)#通用函数方式
def sort_dict_by_value(d, reverse=False):return dict(sorted(d.items(), key=lambda item: item[1], reverse=reverse))d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(sort_dict_by_value(d))
print(sort_dict_by_value(d, reverse=True))
2. 字典推导式的用法和作用
- 要点:字典推导式是简洁创建字典的方式,类似列表推导式,可以结合条件判断,只将满足条件的元素纳入字典。
- 示例:
python
numbers = [1, 2, 3, 4]
# 通过字典推导式,将列表元素作为键,其平方作为值创建字典
squared_dict = {num: num**2 for num in numbers}
print(squared_dict)#只将满足条件的元素纳入字典
numbers = [1, 2, 3, 4, 5]
# 只将偶数的平方纳入字典
squared_dict = {num: num**2 for num in numbers if num % 2 == 0}
print(squared_dict)
3. 字符串转字典
- 要点:将特定格式字符串按规则分割处理,转换为字典,如果字符串格式比较复杂,如包含引号,可以增加处理逻辑。
- 示例:
python
s = "a:1 |a1:2|a2:3|a3:4"
result = {}
# 去除字符串中的空格并按 | 分割成键值对列表
pairs = s.replace(" ", "").split("|")
for pair in pairs:# 将每个键值对按 : 分割key, value = pair.split(":")result[key] = int(value)
print(result)# 复杂格式处理s = ' "a":1 | "a1":2 | "a2":3 | "a3":4 '
result = {}
pairs = s.replace(" ", "").replace('"', "").split("|")
for pair in pairs:key, value = pair.split(":")result[key] = int(value)
print(result)
4. 按列表元素 age 排序
- 要点:对包含字典的列表,按字典中的
age键值从大到小排序,也可以定义一个更灵活的排序函数,支持按不同键排序。 - 示例:
python
alist = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 30}]
# 使用 sorted 函数,通过 lambda 函数指定按 age 排序,reverse=True 表示降序
sorted_alist = sorted(alist, key=lambda x: x['age'], reverse=True)
print(sorted_alist)# 定义排序函数,支持按不同键排序
def sort_list_of_dicts(lst, key, reverse=False):return sorted(lst, key=lambda x: x[key], reverse=reverse)alist = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 30}]
print(sort_list_of_dicts(alist, 'age', reverse=True))
5. 写出列表切片的结果
- 要点:如果列表切片索引超出范围时,会返回空列表。
- 示例:
python
my_list = ['a', 'b', 'c', 'd', 'e']
# 切片索引 11 超出列表长度,返回空列表
print(my_list[11:])
6. 列表生成式产生等差数列
- 要点:使用列表生成式创建公差为 7 的等差数列,也可以将其封装成函数,方便生成不同首项和公差的等差数列
- 示例:
python
first_term = 3 # 等差数列首项
num_terms = 10 # 等差数列项数
# 通过列表生成式生成公差为 7 的等差数列
sequence = [first_term + i * 7 for i in range(num_terms)]
print(sequence)# 函数方式
def arithmetic_sequence(first_term, common_difference, num_terms):return [first_term + i * common_difference for i in range(num_terms)]print(arithmetic_sequence(3, 7, 10))
7. 找出两列表相同与不同元素
- 要点:利用集合的交集和对称差集操作,找出两列表相同和不同元素,也可以处理多个列表,找出所有列表的公共元素和不同元素
- 示例:
python
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
# 将列表转换为集合
set1 = set(list1)
set2 = set(list2)
# 求交集得到相同元素
common_elements = list(set1.intersection(set2))
# 求对称差集得到不同元素
different_elements = list(set1.symmetric_difference(set2))
print("相同的元素:", common_elements)
print("不同的元素:", different_elements)# 多列表方式lists = [[1, 2, 3, 4, 5], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]]
sets = [set(lst) for lst in lists]
# 求所有集合的交集
common = list(set.intersection(*sets))
# 先合并所有集合,再求与交集的差集
all_elements = set.union(*sets)
different = list(all_elements - set(common))
print("相同的元素:", common)
print("不同的元素:", different)
8. 删除列表重复元素
- 要点:使用集合去除列表重复元素,再转换回列表,如果需要保留列表元素的原有顺序,可以使用
dict.fromkeys()方法。 - 示例:
python
my_list = [1, 2, 2, 3, 4, 4, 5]
# 利用集合的唯一性去除重复元素
unique_list = list(set(my_list))
print(unique_list)# 去重并且保留原来的顺序
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)
9. 新式类和经典类有什么区别
- 要点:新式类和经典类在继承顺序、基类、属性查找和
__slots__属性支持上存在差异。Python 3 只有新式类,Python 2 需显式继承object类创建新式类。 - 示例:
python
# Python 2 代码示例,Python 3 只有新式类
# 经典类
class A:def method(self):print("A's method")class B(A):passclass C(A):def method(self):print("C's method")class D(B, C):passd = D()
d.method() # 经典类采用深度优先,输出 A's method# 新式类
class A_new(object):def method(self):print("A_new's method")class B_new(A_new):passclass C_new(A_new):def method(self):print("C_new's method")class D_new(B_new, C_new):passd_new = D_new()
d_new.method() # 新式类采用 C3 线性化,输出 C_new's method
相关文章:
Python常见面试题的详解6
1. 按字典 value 值排序 要点:对于给定字典,使用 sorted() 函数结合 items() 方法,依据 value 进行排序,也可以定义一个通用函数,支持按 value 升序或降序排序。示例: python d {a: 1, b: 2, c: 3, d: …...
Linux基础之文件权限的八进制表示法
1. Linux 文件权限概述 在 Linux 中,每个文件或目录都有三种基本权限,分别是: 读权限 - r:允许查看文件内容。写权限 - w:允许修改文件内容。执行权限 - x:允许执行文件或进入目录。 每个文件或目录的权…...
数据结构与算法面试专题——堆排序
完全二叉树 完全二叉树中如果每棵子树的最大值都在顶部就是大根堆 完全二叉树中如果每棵子树的最小值都在顶部就是小根堆 设计目标:完全二叉树的设计目标是高效地利用存储空间,同时便于进行层次遍历和数组存储。它的结构使得每个节点的子节点都可以通过简…...
《On Java进阶卷》阅读笔记(五)
第7章 IO系统 I/O流: IO有很多不同的来源和去处,如文件、控制台网络连接等,而且还涉及需求以很多种方式,如顺序读取、随机访问、缓冲、字符、按行读取、按字读取等。 Java8的函数式流相关的类和IO流之间并无关联。 IO流隐藏了…...
《代码随想录》刷题笔记——回溯篇【java实现】
文章目录 组合组合总和 III电话号码的字母组合组合总和组合总和II思路代码实现 分割回文串※思路字符串分割回文串判断效率优化※ 复原 IP 地址优化版本 子集子集 II使用usedArr辅助去重不使用usedArr辅助去重 递增子序列※全排列全排列 II重新安排行程题意代码 N 皇后解数独直…...
数值积分:通过复合梯形法计算
在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用 复合梯形法 来进行数值积分,并以一个简单的…...
AcWing——3624. 三值字符串
双指针解法 #include<iostream> #include<unordered_map> using namespace std; int main() {int n; cin >> n;while(n--){unordered_map<char, int> tree;string s; cin >> s;int ans 0x7fffffff; for(int i 0, j 0; j < (int)s.size();…...
【JavaEE进阶】验证码案例
目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…...
Uniapp 短视频去水印解析工具开发实现
最近搞了一个有意思的小工具——短视频去水印解析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…...
计算机网络-八股-学习摘要
一:HTTP的基本概念 全称: 超文本传输协议 从三个方面介绍HTTP协议 1,超文本:我们先来理解「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…...
编程速递-庆祝Delphi诞生30周年!
庆祝Delphi 30周年纪念是一个特别的时刻。 回到1995年,也就是30年前,在微软Windows和互联网时代的曙光初现之时,Borland Delphi的创建者们无法想象,当时使用Borland Delphi构建的应用程序至今仍在运行——为全世界数十亿人服务。…...
每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块
本文重点 前面我们学习了VGG,从现在开始我们将学习谷歌公司推出的GoogLeNet。当年ImageNet竞赛的第二名是VGG,而第一名就是GoogLeNet,它的模型设计拥有很多的技巧,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构 GoogLeNet的网络结构 如图所示就是Go…...
性能测试流程、主流性能工具
性能测试流程 性能测试流程 测试测试需求分析 性能测试计划和方案 测什么: 测试背景 测试目的 测试范围 谁来测: 进度和分工 交付清单 怎么测: 测试策略 性能测试用例设计 性能测试测试执行 性能分析和调优 性能测试报告 测试报告是…...
DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏
DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器,可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API,开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…...
无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架
Solon 框架! Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet&#…...
【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版
针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接:https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录,保持与游戏主程序同目录下。...
使用 playwright 自定义 js 下载的路径和文件名
遇到一个问题,点击按钮自动下载文件,路径和文件名都不能自定义,可以用 playwright 来解决这个问题 from playwright.sync_api import sync_playwright import os import time class ExcelDownloader: def __init__(self, download_pat…...
Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析
#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...
3.从零开始学会Vue--{{生命周期,工程化,组件化}}
1.生命周期钩子 1.是什么 生命周期 概念:就是一个Vue实例从创建 到 销毁 的整个过程 生命周期包括:① 创建 ② 挂载 ③ 更新 ④ 销毁 四个阶段 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改…...
Python--网络编程
3. 网络编程与Socket 3.1 Socket基础 创建Socket import socket# TCP Socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# UDP Socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)服务器端函数 函数描述bind((host, port))绑定…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
