当前位置: 首页 > news >正文

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进阶】验证码案例

目 &#x1f332;实现说明 &#x1f384;Hutool介绍 &#x1f333;准备工作 &#x1f334;约定前后端交互接口 &#x1f6a9;接口定义 &#x1f6a9;实现服务器后端代码 &#x1f6a9;前端代码 &#x1f6a9;整体测试 &#x1f332;实现说明 随着安全性的要求越来越⾼…...

Uniapp 短视频去水印解析工具开发实现

最近搞了一个有意思的小工具——短视频去水印解析器&#xff01;这玩意儿可以把短视频中的水印给抹掉&#xff0c;还能提取视频、封面等资源。整个项目用了 Uniapp 开发&#xff0c;做完后体验了一下&#xff0c;发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…...

计算机网络-八股-学习摘要

一&#xff1a;HTTP的基本概念 全称&#xff1a; 超文本传输协议 从三个方面介绍HTTP协议 1&#xff0c;超文本&#xff1a;我们先来理解「文本」&#xff0c;在互联网早期的时候只是简单的字符文字&#xff0c;但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…...

编程速递-庆祝Delphi诞生30周年!

庆祝Delphi 30周年纪念是一个特别的时刻。 回到1995年&#xff0c;也就是30年前&#xff0c;在微软Windows和互联网时代的曙光初现之时&#xff0c;Borland Delphi的创建者们无法想象&#xff0c;当时使用Borland Delphi构建的应用程序至今仍在运行——为全世界数十亿人服务。…...

每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块

本文重点 前面我们学习了VGG,从现在开始我们将学习谷歌公司推出的GoogLeNet。当年ImageNet竞赛的第二名是VGG,而第一名就是GoogLeNet,它的模型设计拥有很多的技巧,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构 GoogLeNet的网络结构 如图所示就是Go…...

性能测试流程、主流性能工具

性能测试流程 性能测试流程 测试测试需求分析 性能测试计划和方案 测什么&#xff1a; 测试背景 测试目的 测试范围 谁来测&#xff1a; 进度和分工 交付清单 怎么测&#xff1a; 测试策略 性能测试用例设计 性能测试测试执行 性能分析和调优 性能测试报告 测试报告是…...

DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏

DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器&#xff0c;可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API&#xff0c;开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…...

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 框架&#xff01; Solon 是新一代&#xff0c;Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目&#xff08;最近“杭州六小龙”很火啊&#xff0c;我们也是杭州的哦&#xff09;。从零开始构建&#xff08;No Spring、No Java-EE、No Servlet&#…...

【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版

针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接&#xff1a;https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录&#xff0c;保持与游戏主程序同目录下。...

使用 playwright 自定义 js 下载的路径和文件名

遇到一个问题&#xff0c;点击按钮自动下载文件&#xff0c;路径和文件名都不能自定义&#xff0c;可以用 playwright 来解决这个问题 from playwright.sync_api import sync_playwright import os import time class ExcelDownloader: def __init__(self, download_pat…...

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者&#xff1a;孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数&#xff08;扩缩容副本&#xff09;1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...

3.从零开始学会Vue--{{生命周期,工程化,组件化}}

1.生命周期钩子 1.是什么 生命周期 概念&#xff1a;就是一个Vue实例从创建 到 销毁 的整个过程 生命周期包括&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁 四个阶段 1.创建阶段&#xff1a;创建响应式数据 2.挂载阶段&#xff1a;渲染模板 3.更新阶段&#xff1a;修改…...

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))​绑定…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...