九个Python列表生成式高频面试题汇总
作者:赵卓不凡 发布时间:2023-06-04 20:09:51
1. 引言
之前已经有博客专门介绍了Python中的列表生成式,可能大家还不太擅长。这里推荐九个Python列表生成式的面试题(从简单到困难排序),可以帮助大家提高列表生成式的理解水平。
闲话少说,我们直接开始吧!
2. 字符串转整数
假设我们有以下字符串列表:
lis = ["1", "2", "3", "4", "5"]
我们希望用代码实现列表生成式用以将列表中的每个字符串转化为相应的整数,这里假设每一个列表中的元素均可以转化为整数,即样例的输出如下:
[1, 2, 3, 4, 5]
【参考答案】
lis = ["1", "2", "3", "4", "5"]
answer = [int(i) for i in lis]
print(answer)
3. 大于10的数字
假设我们有以下整数列表:
lis = [1,5,13,4,16,7]
我们希望用代码实现列表生成式用以找出上述列表中大于10的数字。即样例的输出如下:
[13, 16]
【参考答案】
lis = [1,5,13,4,16,7]
answer = [i for i in lis if i>10]
print(answer)
4. 大于10且整除3的数字
假设我们有以下整数列表:
lis = [1,12,13,14,15,2,3]
我们希望用代码实现列表生成式用以找出上述列表中大于10且可以整除3的数字。即样例的输出如下:
[12, 15]
【参考答案】
lis = [1,12,13,14,15,2,3]
answer = [i for i in lis if i>10 and i%3==0]
print(answer)
5. 对列表中的偶数执行加1操作
假设我们有以下整数列表:
lis = [1,2,4,5,7]
我们希望用代码实现列表生成式用以对上述列表中的偶数执行加1的操作。即样例的输出如下:
[1,3,5,5,7]
提示: 可以使用三目运算符
【参考答案】
lis = [1,2,4,5,7]
answer = [(i+1 if i%2==0 else i) for i in lis]
print(answer)
6. 包含数字1的数字
实现一个列表生成式,用以求出在数字1到100之间所有包含数字1的数字。
即样例的输出如下:
[1,10,11,12,13,14,15,16,17,18,19,21,31,41,51,61,71,81,91,100]
【参考答案】
answer = [i for i in range(1,101) if "1" in str(i)]
print(answer)
7. 合并两个列表
假设我们有两个长度相同的列表,分别为fruits和prices , 两个列表中的元素分别如下:
fruits = ["apple", "orange", "pear"]
prices = [4,5,6]
我们希望用代码实现列表生成式用以对上述两个列表进行合并,即列表中的元素为(fruit, price)形式。即样例的输出如下:
[("apple",4), ("orange",5), ("pear",6)]
提示: 推荐使用zip函数
【参考答案】
fruits = ["apple", "orange", "pear"]
prices = [4,5,6]
answer = [(fruit, price) for fruit, price in zip(fruits, prices)]
print(answer)
8. 根据value对字典排序
假设我们有以下字典,key为水果名称fruits,value为相应的单价price,如下:
d = {"apple":5, "orange":2, "pear":7, "durian":6}
我们需要实现列表生成式用以对上述字典按price对相应的元素进行排序。即样例输出如下:
[("orange",2), ("apple",5), ("durian",6), ("pear",7)]
提示: 推荐使用 sorted函数
【参考答案】
d = {"apple":5, "orange":2, "pear":7, "durian":6}
answer = sorted([(f,p) for f,p in d.items()], key=lambda x:x[-1])
print(answer)
9. 求两个列表的元素组合
假设我们有以下两个列表:
fruits = ["apple", "orange", "pear"]
recipes = ["pie", "juice"]
我们需要实现列表生成式用以对上述两个列表中的元素求解组合操作。即样例输出如下:
[
("apple", "pie"), ("apple", "juice"),
("orange", "pie"), ("orange", "juice"),
("pear", "pie"), ("pear", "juice")
]
提示: 使用两层嵌套循环
【参考答案】
fruits = ["apple", "orange", "pear"]
recipes = ["pie", "juice"]
answer = [(f,r) for f in fruits for r in recipes]
print(answer)
10. 列表中两个元素的唯一组合,其和为3的倍数
假设我们有以下整数列表:
lis = [1,6,2,4,7]
我们希望用列表生成式来实现在此列表中查找任意两个元素的唯一组合,其总和为3的倍数。即上述样例预期输出为:
[(1,2), (2,4), (2,7)]
【参考答案】
lis = [1,6,2,4,7]
answer = [(i,j) for i in lis for j in lis if i<j and (i+j)%3==0]
print(answer)
11. 总结
本文重点介绍了九个Python列表生成式的面试题,并给出了相应的代码实现,可以加深大家对列表生成式的理解。
来源:https://blog.csdn.net/sgzqc/article/details/124935374


猜你喜欢
- 目的检测字符串中是否包含某字符集合中的字符方法 最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器def containAny(seq
- 一、简介提取图片的边缘信息是底层数字图像处理的基本任务之一。边缘信息对进一步提取高层语义信息有很大的影响。大部分边缘检测算法都是上个世纪的了
- 前言在对DataFrame数据进行处理时,存在需要对数据内容进行遍历的场景。因此记录一下按照行,列遍历的几种方式。一、按行遍历1. 使用lo
- 每点击一次按钮,弹出一个对话框(子窗口),同时开启一个子线程来执行任务并更新对话框内容,关闭对话框则关闭对应子线程1. 建立一个简单的主界面
- 先上图片词云图需要模板pip install jiebapip install wordcloud还需要安装另外两个东西这两个我也不太懂借鉴
- 因为最近在做文本检测相关,想试着用用百度的paddle框架。1、安装Anaconda3官网下载安装包直接运行安装,然后新建python3.7
- 第一款在线格式化工具:Instant SQL Formatter功能强劲,可以设置第二款,和第一款类似,功能也一样,只不过是不同的UI而已,
- 前言参考文章:Python实现照片卡通化我继续魔改一下,让该模型可以支持将gif动图或者视频,也做成卡通化效果。毕竟一张图可以那就带边视频也
- 本文实例讲述了python网络编程之读取网站根目录的方法,分享给大家供大家参考。具体实现方法如下:import socket, sys po
- 1. php 中的序列化在 PHP 中,序列化是将数据结构或对象转换为可以存储或传输的字符串表示的过程,经过序列化之后的对象或者数据结构,就
- 在PyCharm2017中同目录下import其他模块,会出现No model named ...的报错,但实际可以运行这是因为PyChar
- 简介Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建
- 问题描述输入一串字符,由字母、数字和空格组成,长度 < 1000, 判断其中是否存在日期格式的数据。日期格式的数据具有如下的特征,连续
- Vue设置浏览器小图标当我们使用浏览器做开发时,我们能希望浏览器标签页能显示自己的logo小图标,这个是怎样设置的呢?第一步:准备logo图
- 看下面的例子就会明白了: print '|','*'.ljust(10),'|' print
- 1. 问题描述输入一个字符串然后对其进行逆序输出第一种方式:字符串切片第二种方式:使用循环转换然后逆序输出比如:输入字符串'hell
- cron 简介在 Unix-like 操作系统中,有一个大家都很熟悉的 cli 工具,它能够来处理定时任务,周期性任务,这就是:
- 简介 开启慢查询日志,可以让MySQL记录下查询超过指定时
- 1.打包多个py文件并且去除cmd黑框格式:pyinstaller.exe -F 路径\文件名.py空格路径\文件名.py空格--nocon
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️边界填充概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天