python面试_总结03_列表练习题
1、列表练习题
完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错。
def test(got, expected):
if got == expected:
prefix = '正确!'
else:
prefix = '错误!'
print('%s 你的结果: %s 应该返回的结果: %s' % (prefix, repr(got), repr(expected)))
习题1
输入一个字符串列表,返回同时满足以下两个条件的字符串的个数:
- 1.字符串长度大等于2
- 2.字符串的第一个字符等于最后一个字符
注意:python语言中没有 ++ 操作符,但是有 += 操作符。
# 可运行代码自测
test(match_ends(['aba', 'xyz', 'aa', 'x', 'bbb']), 3)
test(match_ends(['', 'x', 'xy', 'xyx', 'xx']), 2)
test(match_ends(['aaa', 'be', 'abc', 'hello']), 1)
正确! 你的结果: 3 应该返回的结果: 3
正确! 你的结果: 2 应该返回的结果: 2
正确! 你的结果: 1 应该返回的结果: 1
习题2
输入一个字符串列表,返回满足以下条件的字符串列表:
- 1.按字母顺序从小到大排序
- 2.第一个字母是'x'的字符串排列在最前面
例如:输入 ['mix', 'xyz', 'apple', 'xanadu', 'aardvark'] ,应该返回 ['xanadu', 'xyz', 'aardvark', 'apple', 'mix']
提示:可以通过生成两个列表并对它们分别进行排序,然后再把它们连接起来。
def front_x(words):
# +++your code here+++
# 创建两个列表,list1用于存首字母是x的,list2存其他
list1 = []
list2 = []
# 取出字符串列表中的每个字符串
for s in words:
# print(s)
# 首字母是x
if s[0] == 'x':
list1.append(s)
# 其他
else:
list2.append(s)
# print(list1)
# print(list2)
# 对两个列表分别排序
list1 = sorted(list1)
list2 = sorted(list2)
# 将两个列表拼接
list1.extend(list2) return list1
# 可运行代码自测
test(front_x(['bbb', 'ccc', 'axx', 'xzz', 'xaa']), ['xaa', 'xzz', 'axx', 'bbb', 'ccc'])
test(front_x(['ccc', 'bbb', 'aaa', 'xcc', 'xaa']), ['xaa', 'xcc', 'aaa', 'bbb', 'ccc'])
test(front_x(['mix', 'xyz', 'apple', 'xanadu', 'aardvark']), ['xanadu', 'xyz', 'aardvark', 'apple', 'mix'])
正确! 你的结果: ['xaa', 'xzz', 'axx', 'bbb', 'ccc'] 应该返回的结果: ['xaa', 'xzz', 'axx', 'bbb', 'ccc']
正确! 你的结果: ['xaa', 'xcc', 'aaa', 'bbb', 'ccc'] 应该返回的结果: ['xaa', 'xcc', 'aaa', 'bbb', 'ccc']
正确! 你的结果: ['xanadu', 'xyz', 'aardvark', 'apple', 'mix'] 应该返回的结果: ['xanadu', 'xyz', 'aardvark', 'apple', 'mix']
习题3
输入一个非空的元组列表,返回按列表中元组的最后一个元素从小到大排序后的元组列表
例如:输入:[(1, 7), (1, 3), (3, 4, 5), (2, 2)],应该返回:[(2, 2), (1, 3), (3, 4, 5), (1, 7)]
提示:使用自定义键=函数从每个元组提取最后一个元素
def sort_last(tuples):
# +++your code here+++
print("最开始的我是这样的:", tuples)
# 创建一个字典用于保存数据
dict_ = {}
# 创建一个列表用于保存最终排序结果
list_end = []
# 得到列表中元组的最后一个元素
for i in tuples:
dict_[i[-1]] = i
print("得到的字典长啥样: ", dict_) # 得到字典中的keys的列表
list_keys = dict_.keys()
print("得到的列表长啥样: ", list_keys)
# 根据字典中的keys进行排序
list_keys = sorted(list_keys)
print("将keys列表排序后: ", list_keys)
# 依次取出keys
for i in list_keys:
# 利用键值对,将排序好的keys对应的values,依次装入新的列表
list_end.append(dict_[i])
print("最终的我是这样的: ", list_end) return list_end
# 可运行代码自测
test(sort_last([(1, 3), (3, 2), (2, 1)]), [(2, 1), (3, 2), (1, 3)])
最开始的我是这样的: [(1, 3), (3, 2), (2, 1)]
得到的字典长啥样: {3: (1, 3), 2: (3, 2), 1: (2, 1)}
得到的列表长啥样: dict_keys([3, 2, 1])
将keys列表排序后: [1, 2, 3]
最终的我是这样的: [(2, 1), (3, 2), (1, 3)]
正确! 你的结果: [(2, 1), (3, 2), (1, 3)] 应该返回的结果: [(2, 1), (3, 2), (1, 3)]
习题4
输入一个数字列表,将所有相邻且相同的元素去重保留一个元素后返回
例如:输入[1, 2, 2, 3] 返回 [1, 2, 3];输入[1, 1, 2, 2, 3, 3, 3] 返回 [1, 2, 3]
def remove_adjacent(ll):
# +++your code here+++
# 逆序,这样就不会出现下标溢出的情况
for i in range(len(ll) - 1, 0, -1):
# print("现在都到了第%d步" % i)
# print(ll)
if ll[i] == ll[i-1]:
# 删除相邻且重复的元素
del ll[i]
return ll
# 可运行代码自测
test(remove_adjacent([1, 2, 2, 3]), [1, 2, 3])
test(remove_adjacent([2, 2, 3, 3, 3]), [2, 3])
test(remove_adjacent([]), [])
正确! 你的结果: [1, 2, 3] 应该返回的结果: [1, 2, 3]
正确! 你的结果: [2, 3] 应该返回的结果: [2, 3]
正确! 你的结果: [] 应该返回的结果: []
习题5
给定两个按递增顺序排序的列表,创建并返回一个合并的按排序排列的所有元素的列表。
例如输入 ['aa', 'xx', 'zz'], ['bb', 'cc'],应该返回['aa', 'bb', 'cc', 'xx', 'zz']
希望你提供的解决方案在“线性”时间内工作,使两个列表都可以一次完成。
def linear_merge(list1, list2):
# +++your code here+++
result = []
while len(list1) and len(list2):
# 对两个列表首字符串元素比较大小
if list1[0] < list2[0]:
# result添加该元素,并且在原列表中删除该元素
result.append(list1.pop(0))
else:
result.append(list2.pop(0)) # 循环结束后,因为两个列表的长度可能不同,会存在冗余
result.extend(list1)
result.extend(list2) return result
# 可运行代码自测
test(linear_merge(['aa', 'xx', 'zz'], ['bb', 'cc']),['aa', 'bb', 'cc', 'xx', 'zz'])
test(linear_merge(['aa', 'xx'], ['bb', 'cc', 'zz']),['aa', 'bb', 'cc', 'xx', 'zz'])
test(linear_merge(['aa', 'aa'], ['aa', 'bb', 'bb']),['aa', 'aa', 'aa', 'bb', 'bb'])
正确! 你的结果: ['aa', 'bb', 'cc', 'xx', 'zz'] 应该返回的结果: ['aa', 'bb', 'cc', 'xx', 'zz']
正确! 你的结果: ['aa', 'bb', 'cc', 'xx', 'zz'] 应该返回的结果: ['aa', 'bb', 'cc', 'xx', 'zz']
正确! 你的结果: ['aa', 'aa', 'aa', 'bb', 'bb'] 应该返回的结果: ['aa', 'aa', 'aa', 'bb', 'bb']
python面试_总结03_列表练习题的更多相关文章
- python面试_总结04_字符串练习题
完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错 def test(got, expected): if got == expected ...
- python面试_总结02_代码题
- 代码题 1.创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法. 具体要求: 如果合法则输出 True,否则输出 False. 如果该字符串与Python内置的关键字,或Bif ...
- python面试_总结01_概念和内置高阶函数
- 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...
- Python内建的对象列表
Python内建的对象列表 刚写Python肯定会遇到这样的情况,想写些什么,但又不知从何写起... 在我看来问题在于我们不知道有什么东东可以拿来玩,这里列出Python的内建对象,稍微归类了一下,多 ...
- python开发_++i,i += 1的区分
python开发_++i,i += 1的区分 在很多编程语言(C/C++,Java等)中我们都会碰到这样的语法: 1 int i = 0; 2 ++ i; // -- i; 这样的语法在上述编程语言中 ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- python练习_购物车(简版)
python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
- Python面试真题答案或案例
Python面试真题答案或案例如下: 请等待. #coding=utf-8 #1.一行代码实现1--100之和 print(sum(range(1,101))) #2.如何在一个函数内部修改全局变量 ...
- Python递归_打印节点信息
Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...
随机推荐
- 学习Java第17天
今天差不多搞清了Javaweb的基本学习路线及网站开发的基本流程,以前好像走了不少弯路,不过还好,明天开始学习Javaweb sql 总结了许多 新的学习方法,记笔记很重要,学多少忘多少. 练习也很重 ...
- JavaScript数据结构之链表
链表相较于数组的优缺点 1. 链表在 插入.删除.移动数据效率比数组要高,数组插入.移动.删除数据需要改变没有数据的索引,而链表则只需要更改指针即可 2. 在查询方面,数组要优于链表,数组存储的数据是 ...
- Spring源码-IOC部分-自定义IOC容器及Bean解析注册【4】
实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...
- 「JOISC 2016 Day 1」棋盘游戏
「JOISC 2016 Day 1」棋盘游戏 先判无解:第1,3行有连续的空格或四个角有空格. 然后可以发现有解的情况第1,3行可以在任意时间摆放. 对于某一列,若第2行放有棋子,那么显然可以把棋盘分 ...
- Linq to SQL各种参考
原文:https://www.cnblogs.com/lyj/archive/2008/01/23/1049686.htmlhttps://www.cnblogs.com/lyj/archive/20 ...
- cookie、session、jsession 关系
感谢大佬:https://www.cnblogs.com/fsjin/articles/3490531.html 在使用CAS的时候,对Cookies.session.jsession 这三者是什么不 ...
- js 对象的深克隆
前端笔试或者面试的时候,很喜欢问的一个问题就是对象的深度克隆,或者说是对象的深度复制.其实这个问题说容易很容易,但是要说全面也挺不易. 要弄明白对象的克隆,首先要明白js中对象的组成.在js中一切实例 ...
- 转载_最值得阅读学习的10个C语言开源项目代码
"源代码面前,了无秘密",阅读优秀代码无疑是开发人员得以窥见软件堂奥而登堂入室的捷径.本文选取10个C语言优秀开源项目的代码作为范本,分别给予点评,免去东搜西罗之苦,点赞!那么问题 ...
- Java基础复习(六)
1. 接口的实现类中的实现接口中的抽象方法的方法必须为public,为什么? 接口中所有的方法与变量都默认是 public 的,在接口中可以不写出来.但在实现类中,如果不明写的话,就变成了 frien ...
- Kubernetes(K8s)基础概念 —— 凿壁偷光
Kubernetes(K8s)基础概念 -- 凿壁偷光 K8s是什么:全称 kubernetes (k12345678s) 作用:用于自动部署,扩展和管理"容器化应用程序"的 ...