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.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...
随机推荐
- PyTorch 介绍 | TRANSFORMS
数据并不总是满足机器学习算法所需的格式.我们使用transform对数据进行一些操作,使得其能适用于训练. 所有的TorchVision数据集都有两个参数,用以接受包含transform逻辑的可调用项 ...
- 如何高效地写 Form
工作少不了写"增删改查","增删改查"中的"增"和"改"都与 Form 有关,可以说:提升了 Form 的开发效率,就提 ...
- PHP扩展开发编译环境的搭建
PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系 ...
- Android WebView组件 访问部分网页崩溃问题【已解决】
最近刚接触Android,在测试WebView组件时发现总是出现崩溃现像: 提示:ERR_CLEARTEXT_NOT_PERMITTED 当时以为是权限问题,查找自己的AndroidManifest文 ...
- docker基础——4.网络待补
docker network ls bridge:NAT桥 host:共用宿主机namespace的UTS.IPC.Network none:只有lo,没有网卡 其他待补
- linux用户用户组与ACL
使用者ID:UID与GID 在使用Linux的过程中,经常会遇到各种用户ID(user identifier, UID)和组ID(group identifier, GID),Linux也是通过对这些 ...
- 虫师Selenium2+Python_8、自动化测试高级应用
P205--HTML测试报告 P213--自动发邮件功能 P221--Page Object 设计模式
- 使用污点分析检查log4j问题
摘要:log4j问题的余波还在继续,为什么这个问题潜伏了这么长时间,大家一直没有发现?这里从静态分析的角度谈下log4j问题的发现. 本文分享自华为云社区<使用污点分析检查log4j问题> ...
- 从MVC到DDD的架构演进
DDD这几年越来越火,资料也很多,大部分的资料都偏向于理论介绍,有给出的代码与传统MVC的三层架构差异较大,再加上大量的新概念很容易让初学者望而却步.本文从MVC架构角度来讲解如何演进到DDD架构. ...
- 微服务从代码到k8s部署应有尽有系列(四、用户中心)
我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...