九个Python列表生成式高频面试题汇总
本文精选九个Python列表生成式(列表推导式)的高频面试题,难度由浅入深。内容涵盖字符串转整数、条件过滤、三元运算符、字典排序及多重循环等核心场景,通过具体代码示例解析列表生成式的高级用法,帮助开发者提升代码简洁性与执行效率。
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列表生成式的面试题,并给出了相应的代码实现,可以加深大家对列表生成式的理解。
到此这篇关于九个Python列表生成式高频面试题汇总的文章就介绍到这了,更多相关Python列表生成式内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









