《python基础面试,列表排序》

【面试宝典】软件测试工程师2021烫手精华版(第八章Python基础篇) (第八章Python基础篇) 阅读详情

给大家推荐一个公众号:诗葵1931

里面的诗歌很美

在这里插入图片描述

python基础面试中,列表排序往往是一个热门话题,今天就和大家聊聊python的排序知识点

首先呢python list内置sort()方法就可以用来排序,用法也相当简单
其次python内置的全局sortd()方法也可以对迭代的序列排序生成新的序列¶
  • list内置sort()方法无返回值,直接在原有列表上进行操作
  • sortd()方法有返回值生成新的序列
下面我们用例子说明
In [6]:
#对列表list_a分别利用sort和sortd进行排序
list_a = [12,4,78,-3,-45,33,66,1,-8]
#sort排序
print('原有列表为:',list_a)
print('list.sort()在list基础上修改,无返回值')
list_a.sort()
print('list.sort()排序后的结果为:',list_a)
原有列表为: [12, 4, 78, -3, -45, 33, 66, 1, -8]
list.sort()在list基础上修改,无返回值
list.sort()排序后的结果为: [-45, -8, -3, 1, 4, 12, 33, 66, 78]
list.sort()默认升序排列,若想要降序排序只需添加反转参数reverse=True即可:
In [7]:
list_a.sort(reverse=True)
print('升序排序结果为:',list_a)
升序排序结果为: [78, 66, 33, 12, 4, 1, -3, -8, -45]
In [8]:
list_a = [12,4,78,-3,-45,33,66,1,-8]
res = sorted(list_a)
print('sortd()排序有返回值,得到的排序结果为:',res)
sortd()排序有返回值,得到的排序结果为: [-45, -8, -3, 1, 4, 12, 33, 66, 78]
  • sortd()默认也是升序排序,若想降序排序也只需要添加reverse=True参数即可
  • sortd()常用参数有三个,reverse=True为其中一个,还有一个参数为list_a这个iterable可迭代对象,还有一个为key函数,也就是自定义的一个函数,可以对排序进行简单的操作,下面举例说明
In [9]:
#对列表list_a使用lambada函数排序
list_a = [12,4,78,-3,-45,33,66,1,-8]
res_1 = sorted(list_a)
res_2 = sorted(list_a,reverse=True)
res_3 = sorted(list_a,key=lambda x:x)
print('默认排序为:',res_1)
print('升序为:',res_2)
print('lambada函数排序为:',res_3)
默认排序为: [-45, -8, -3, 1, 4, 12, 33, 66, 78]
升序为: [78, 66, 33, 12, 4, 1, -3, -8, -45]
lambada函数排序为: [-45, -8, -3, 1, 4, 12, 33, 66, 78]
  • 使用lambada函数对listlist_1排序,要求输出结果正数从小到大排序,负数从大到小排序
In [13]:
list_a = [12,4,78,-3,-45,33,66,1,-8]
res = sorted(list_a,key=lambda x:(x<0,abs(x)))
print('排序结果为:',res)
排序结果为: [1, 4, 12, 33, 66, 78, -3, -8, -45]
  • 列表嵌套字典排序,分别根据年龄和姓名排序
In [12]:
list_b = [
    {"name":"as","age":"12"},
    {"name":"cd","age":"34"},
    {"name":"dn","age":"45"},
    {"name":"dbv","age":"88"}
]
age = sorted(list_b,key=lambda x:x["age"],reverse=True)
print('年龄从大小排序结果为:',age)
name = sorted(list_b,key=lambda x:x["name"])
print('姓名从小到大排序为:',name)
年龄从大小排序结果为: [{'name': 'dbv', 'age': '88'}, {'name': 'dn', 'age': '45'}, {'name': 'cd', 'age': '34'}, {'name': 'as', 'age': '12'}]
姓名从小到大排序为: [{'name': 'as', 'age': '12'}, {'name': 'cd', 'age': '34'}, {'name': 'dbv', 'age': '88'}, {'name': 'dn', 'age': '45'}]
  • 列表嵌套元组,分别按字母和数字排序
In [14]:
list_c = [
    ('aa',12),("sd",23),("fgr",26),("jy",8)
]
res_word = sorted(list_c,key=lambda x:x[0])
res_num = sorted(list_c,key=lambda x:x[1],reverse=True)
print('字母排序结果为:',res_word)
print('数字排序结果为:',res_num)
字母排序结果为: [('aa', 12), ('fgr', 26), ('jy', 8), ('sd', 23)]
数字排序结果为: [('fgr', 26), ('sd', 23), ('aa', 12), ('jy', 8)]
  • 列表嵌套列表排序,年龄数字相同怎么办?
In [15]:
list_d = [
    ['qw',18],['sa',10],['fgd',18],['nh',45],['yu',23]
]
res = sorted(list_d,key=lambda x:(x[1],x[0]))
print('当年龄相同时添加另一个参数按照字母名称排序,结果为:',res)
当年龄相同时添加另一个参数按照字母名称排序,结果为: [['sa', 10], ['fgd', 18], ['qw', 18], ['yu', 23], ['nh', 45]]
  • 根据键对字典排序(方法一,zip函数)
In [17]:
dict_1 = {"name":"yx","sex":"man","city":"cd"}
#将字典转列表嵌套元组
foo = zip(dict_1.keys(),dict_1.values())  #得到可迭代对象
foo = [i for i in foo]
print('字典转成列表嵌套元组:',foo)
res = sorted(foo,key=lambda x:x[0])  #字典嵌套元组排序
print('根据键排序结果为:',res)
#排序完成后构建新的字典
new_dic = {i[0]:i[1] for i in res}
print('排序后新的字典为:',new_dic)
字典转成列表嵌套元组: [('name', 'yx'), ('sex', 'man'), ('city', 'cd')]
根据键排序结果为: [('city', 'cd'), ('name', 'yx'), ('sex', 'man')]
排序后新的字典为: {'city': 'cd', 'name': 'yx', 'sex': 'man'}
  • 根据键对字典排序(方法儿,使用字典items方法)
In [18]:
dict_1 = {"name":"yx","sex":"man","city":"cd"}
#字典转成列表嵌套元组
print(dict_1.items())
res = sorted(dict_1.items(),key=lambda x:x[0])
print('排序结果为:',res)
#构建新的字典
new_dic = {i[0]:i[1] for i in res}
print('排序后新的字典为:',new_dic)
dict_items([('name', 'yx'), ('sex', 'man'), ('city', 'cd')])
排序结果为: [('city', 'cd'), ('name', 'yx'), ('sex', 'man')]
排序后新的字典为: {'city': 'cd', 'name': 'yx', 'sex': 'man'}
补充内容
  • 除了上述操作外,列表排序还可以借助operator模块的itemgetter函数辅助列表排序
  • operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号
  • operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
In [19]:
#导包
from operator import itemgetter

list_e = [1,2,3,4,5]
func_1 = itemgetter(1)   #定义函数func_1,获取对象的第一个域的值
print(func_1(list_e))
2
In [21]:
list_e = [1,2,3,4,5]
func_2 = itemgetter(1,0)   #定义函数func_2,获取对象的第一个域和第0个域值
print(func_2(list_e))
(2, 1)
In [23]:
#按年龄为主要关键字,名字为次要关键字倒序排序:
students = [[3,'Jack',12],[2,'Rose',13],[1,'Tom',10],[5,'Sam',12],[4,'Joy',8]]

res = sorted(students,key=itemgetter(2,1),reverse=True)
print(res)
[[2, 'Rose', 13], [5, 'Sam', 12], [3, 'Jack', 12], [1, 'Tom', 10], [4, 'Joy', 8]]

本文出自北京图灵学院公众号原创文章,转载请注明出处!

平安科技Python面试题分析 Steven最近在考虑换工作,突然接到了平安的面试邀请,也没怎么特别的准备就跑过去面试了,结果聊了一个小时之后被无情刷掉,不过还是想把这次的一些考点放在这里供大家以后参考。btw:面试我的竟然是个妹子,刚开始进来的时候我还以为先是HR面,结果人家一开始问技术问题,肃然起敬。 先是问道: 1.Python里面的数据类型有哪些? 分析:其实这个问题并不难,除了基础的int/float/bool/... 阅读详情

相关推荐

Codex接入CCSwitch:本地代理与模型路由配置指南

在AI编程工具链中,本地代理与模型路由是连接智能体与模型服务的核心桥梁。Codex作为OpenAI推出的编程智能体,虽然具备强大的仓库理解和自主编码能力,但其默认模型链路固定,导致在多模型切换、内网统一管理及成本控制上存在天然瓶颈。CCSwitch正是为解决这一痛点而生的本地代理工具,它通过OpenAI兼容协议将Codex的请求透明转发至DeepSeek、通义千问等第三方模型服务,使模型切换如同点击按钮般简单。本文从本地代理和模型路由器的基础原理切入,系统讲解Codex与CCSwitch的安装配置、模型ID

weixin_33910460的博客 427

【Python】排序

【代码】【Python】排序。

烦成航的博客 483

Matlab结果性能评价---rms函数(计算矩阵、数组和向量元素均方根)

实例1:创建一个向量(正弦波)并计算其均方根值 实例2:创建一个二维矩阵并计算其均方根值 实例3:计算二维矩阵沿指定维度的均方根值 本例程配套完整源码下载 均方根(Root-Mean-Square Level): 向量x的均方根值为沿着指定的维度执行求和: 语法描述: y = rms(x)返回输入x的均方根值。如果x是行或列向量,y是实数值标量。对于大小尺寸大于1矩阵x,y包含沿x的第一个数组维度计算的均方根值。例如,如果x是N > 1的N*M矩阵,那么y是1*M行向量,对应x矩..

qq_32809093的博客 3万+

实现对学生表格的排序。(python)

实现对学生表格的排序。从键盘上将表格的的行数及每行数据录入,编程用合适的数据对象将其存储,“性别”为第一关键字进行升序排序,“年龄”为第二关键字进行降序排序。比如,本例中,按性别升序排序,当性别相同时,按年龄降序排序。(提示:字符串的比较,是按其unicode码来比的)最后,输出该表的内容。

qq2771395100的博客 855

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5932

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

python语法糖 -- 列表正负数的排序

有这样一个列表: lst = [1, -2, 10, -12, -4, -5, 9, 2] 现在要求:将列表进行排序,正数在前,负数在后,并且分别按绝对值从小到大,要求的输出结果是: [1, 2, 9, 10, -2, -4, -5, -12] ...

gymaisyl的博客 5987

ThinkPad T14 Gen 2与T14P系列对比

表格您的需求推荐机型日常办公、出差、文档处理、视频会议✅(够用、轻便、便宜)视频剪辑、3D建模、编程编译、AI训练、高色准设计✅(性能强、屏幕好、扩展佳)想要未来 5 年不换机✅T14p预算低于 5000 元✅T14 Gen 2(或考虑 T14 Gen 3/4)T14p 2025 款 ≠ 小改款,而是架构级升级它从“高性能笔记本”进化为“AI 移动工作站”,核心差异在于NPU + Ultra 平台 + 全面屏显 + 超长续航。如果您从事AI 开发、视频创作、工程仿真、多任务编程。

tecoes的博客 2733

python排序sort&sorted

待补充

shitou987的博客 759

保姆级教程:彻底清理Win11更新缓存并解除外设,一次搞定0xc1900101更新错误

本文提供了一套完整的Win11更新报错0xc1900101解决方案,涵盖软件环境净化和硬件设备隔离。通过终止干扰进程、重置更新组件、清理临时文件以及断开外设等步骤,有效提升更新成功率。特别强调外设驱动兼容性对解决0xc1900101错误的关键作用。

weixin_33483304的博客 416

1位2路选择器设计

1位2路选择器设计

好好学习,天天向上 3575

第十四届青少年蓝桥杯python组省赛真题

因子,因子也叫因数,例如3*5=15,那么3和5是15的因子。有N个正整数,现对N个正整数进行不同方式的排列,每次排列后都会按照以下规则进行次计算, 聪明的小蓝发现,排列方式不同,最后计算出的结果也不相同。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。3.已知ls=[3.5,”Python”,[10,“LIST”],3.6],那么ls[2][-1][1]的运行结果是?其中排列方式为1, 3, 4, 2时,按照规则计算2次: 1*3*4=12, 3*4*2=24;乘积相加: 12+24=36。

weixin_51623910的博客 3194

【笔记】1.1 拉伸力-伸长(延伸)曲线和应力-应变曲线

过了B点后,由于颈缩导致的截面半径迅速减小,导致真应力迅速上升,切线斜率明显提高。假设试样原长为ε,在力的作用下伸长了dε,那么根据应变的定义,瞬时的应变为dε/ε,总的应变为瞬时应变的累计,假设在瞬时的条件下,试样受载荷变化量为 ΔF ,变化的截面积为 ΔA ,而且ΔA→0,那么瞬时的。由于原始的截面积和原始的标距长度为常数,故得到的曲线长相和拉伸力-伸长(延伸)曲线没啥区别。因为用的都是原始的截面积和原始的标距长度,故称为公称应力和公称应变。如果拉伸力→应力,伸长长度→应变,就会得到应力-应变曲线。

m0_73676887的博客 5269

老男孩上海校区Python面试题

python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={‘a’:24,‘g’:52,‘i’:12,‘k’:33}请按字典中的 value 值进行排序? 1. sorted(dict.items(),key = lambda x:x[1]) 1.2 说一下字典和json的区别? 1. 字典是一种数据结构,json是一种数据的表现形式,字典的key值只要是...

DominicJi的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python面试宝典(第二章 Python基础)

Python面试宝典(第二章 Python基础)Python面试宝典(第二章 Python基础) Python面试宝典(第二章 Python基础)

Avery123123的博客 693

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python 2022年面试题总结

1、python2和python3区别?2、 Python代码中_args, *_kwargs 含义及用法?3、请列出 5 个 python 标准库?4、Python的可变数据类型和不可变数据类型分别有?5、Python 中os和sys模块的作用分别是?6、Python赋值、浅拷贝和深拷贝的区别?7、请阐述在Python中split(),sub(),subn()的功能分别是什么?8、举例 sort 和 sorted方法的区别?9、解释 Python 中的可变类型和不可变类型?10、Python 中类方法、

weixin_43474701的博客 883

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

靠着阿里师兄给的170 道 Python 面试题,我已成功上岸【Python基础篇】

阿里师兄精心整理的 Python 相关的基础知识,用于面试,或者平时复习,都是很好的!废话不多说,直接开搞 由于文章过长,小编也贴心的把文章整理成了PDF文档,想要观看学习起来更方便的话在文末查看获取方式~ 基础篇 1. 为什么学习 Python 2. 解释型和编译型语言的区别 3. 简述下 Python 中的字符串、列表、元组和字典 4. 简述上述数据类型的常用方法 5. 简述 Python 中的字符串编码 6.一行代码实现数值交换 7. is 和 == 的区别 8.P

python_dagren的博客 807

python基础面试练习题

5、print("----append:将一个值添加到列表中,extend是将一个列表的值添加到列表中---")print("-------------从列表中删除重复元素--------------")----append:将一个值添加到列表中,extend是将一个列表的值添加到列表中----------------从列表中删除重复元素--------------print("-------------分割线--------------")7、print("---将两个列表组合成一个元祖列表--")

wennie11的博客 414

python面试题1-20

python编程题1-20 1.优化一下下面的程序 result = [] for x in range(10): result.append(x ** 2) print(result) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 答案: result = [x ** 2 for x in range(10)] result [0, 1, 4, 9, 1...

u011164680的博客 1155

【Python】列表元素的 排序 操作(默认升序、指定关键字后降序)(1)

lst.sort(reverse=True) # reverse=True表示降序排序,reverse=False 表示升序排序print(‘降序排序后的列表:’,lst)

2401_84585462的博客 715

python列表面试题_python面试题(十)

Python中基本数据结构的操作元组列表字典集合定义新增更改删除2.请尽可能列举python列表的成员方法,并给出一下列表操作的答案:(1)a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?(1)1 3 5(2)4 5答案(2) 一行代码实现对列表a中的偶数位置的元素进行加3后求和?sums = sum(map(lambda x: x + 3, a[1::2]))答案3...

weixin_39653622的博客 381

python从小到大的顺序输出_110道python面试题

1、一行代码实现1--100之和利用sum()函数求和2、如何在一个函数内部修改全局变量函数内部global声明 修改全局变量3、列出5个python标准库os:提供了不少与操作系统相关联的函数sys: 通常用于命令行参数re: 正则匹配math: 数学运算datetime:处理日期时间4、字典如何删除键和合并两个字典del和update方法5、谈下python的GILGIL 是...

weixin_39693101的博客 3121

python基础笔试题

1. """ 补充缺失的代码 def print_directory_contents(sPath): 这个函数接收文件夹的名称作为输入参数 返回该文件夹中文件的路径 以及其包含文件夹中文件的路径 """ import os def print_directory_contents(sP...

u014248032的博客 2237

软件测试常见python3面试题(一)

不管大家愿意不愿意,现在面试测试多多少少都会出现一些编程题目,下面是小酋收集的一些常见python3面试题,助大家一臂之力。(后面将持续更新) 1、lambda 运用 sum= lambda a,b:a*b print(sum(7,9)) 2、统计字符串中每个字母的个数 from collections import Counter a2="sdfjksajkasjdkjdsfkjlksfjkskjhklskjsdkjkfd" res2 = Counter(a2) print(res2) 3、字符串.

公众号【伤心的辣条】资料领取~ 902

关于面试总结4-python笔试题

前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功。 要是给你一台电脑,在编辑器里面边写边调试,没多大难度。主要是给你一张纸和笔,让你现场写出来,那就没那么容易了。 (本篇代码都是基于python3.6) 1.统计 统计在一个队列中的数字,有多少个正数,多少个负数,如[1, 3, 5, 7, 0, -1, -9, -4, -5, 8] 方法一 # coding:utf-8 a = [1, 3, 5, 7, 0

qq_27371025的博客 261

python面试题(面向测试工程师)

这份python面试题是面向测试工程师来巩固编程基础知识而写的,为了实现自动化测试所需用到的python基础,总结了面试时可能会被问到的问题。

古代宇航员的博客 3452
上一篇: 算法设计-解图三着色问题 C代码
下一篇: python基础06_函数作用域
Young_and_Cold
博客等级 码龄9年 180粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值