一, 准备基础
学完python学习系列-培训课的深&浅拷贝之后可做
二, 题目
问题1:lst1 = [1, 3, 2, 6, 1, 1, 4],程序实现:求lst1最后一个元素1的索引
问题2:lst1 = [1, 3, 2, 6, 4],程序实现:删除lst1元素中的中位数
问题3:lst1 = [1, 3, 2, 6, 4],程序实现:删除lst1元素中的最大值和最小值
问题4:lst1 = [1, 3, 2, 6, 4],程序实现:删除反向后的lst1中索引为3的元素,并输出该元素
问题5:lst1 = [1, 2, 3] lst2 = [4, 5, 6],程序实现:把lst2中元素加到lst1中,并对lst1进行降序排列
问题6:实现用户输入一串小写的英文字母,输出其中英文字母有几种;例如输入abcd,输出8
问题7: 有如下两个列表: lst1 = [1, 2, 3, 2, 5, 1, 2] lst2 = [2, 7, 9, 5]
编程实现:
- 求哪些整数既在lst1中,也在lst2中
- 求哪些整数在lst1中,不在lst2中
- 求两个列表一共有哪些整数
三,解析及源代码
1,问题1:
lst1 = [1, 3, 2, 6, 1, 1, 4],程序实现:求lst1最后一个元素1的索引
分析
1,分解问题,分析实现步骤:先找到lst1最后一个元素1,再找到它的索引;
2,找lst1最后一个元素1:在查找类对象方法里面去找,找到对象方法list.index是可以适用的,该对象方法定义如下
3,对照可以看出x给1;尝试着start给-1,end给0后发现不行,此方法只能支持正向查找
4,那就把lst1先给反向(使用list.reverse),然后再查出此时的索引,再+1取反即可
代码如下
lst1 = [1, 3, 2, 6, 1, 1, 4]
lst1.reverse()
print(-(lst1.index(1,0,-1)+1))
输出
-2
2, 问题2:
lst1 = [1, 3, 2, 6, 4],程序实现:已知lst1元素为5且元素不重复,删除lst1元素中的中位数
分析
1,分解问题,分析实现步骤:先求出中位数,再从列表中删除掉值和它一样的
2,找中位数:先复制一个到lst2,将lst2使用list.sort()升序排列,索引为2的即为中位数
3,删除:使用list.remove()
代码如下
lst1 = [1, 3, 2, 6, 4]
lst2 = lst1.copy()
lst2.sort()
a = lst2[2]
lst1.remove(a)
print(lst1)
输出为
[1, 2, 6, 4]
3,问题3:
lst1 = [1, 3, 2, 6, 4],程序实现:删除lst1元素中的最大值和最小值
分析
1,分解问题,分析实现步骤:找到最大值和最小值,然后再删除
2,找到最大值和最小值:先复制一个到lst2,将lst2按升序排列,找到lst2的头尾两个元素值
3,从lst1中删除:使用list.remove()删除这最大值和最小值
代码如下
lst1 = [1, 3, 2, 6, 4]
lst2 = lst1.copy()
lst2.sort()
lst2_max = lst2[-1]
lst2_min = lst2[0]
lst1.remove(lst2_max)
lst1.remove(lst2_min)
print(lst1)
输出为
[3, 2, 4]
问题4:
lst1 = [1, 3, 2, 6, 4],程序实现:删除反向后的lst1中索引为3的元素,并输出该元素
分析
1,分解问题,分析实现步骤:先反向,在删除索引3的元素并返回
2,反向:使用list.reverse()
3,删除索引3元素并返回:使用list.pop()
代码如下
lst1 = [1, 3, 2, 6, 4]
lst1.reverse()
print(lst1.pop(3))
输出为
3
问题5:
lst1 = [1, 2, 3] lst2 = [4, 5, 6],程序实现:把lst2中元素加到lst1中,并对lst1进行降序排列
分析
1,把lst2中元素加到lst1中:直接使用list.extend()
2,对lst1进行降序排列:使用list.sort()
代码如下
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.extend(lst2)
lst1.sort(reverse=True)
print(lst1)
输出为
[6, 5, 4, 3, 2, 1]
问题6:
实现用户输入一串小写的英文字母,输出其中英文字母有几种;例如输入abcd,输出8
分析
1,分解问题,分析实现步骤:先将用户的输入保存到某个变量,再分析此变量中的英文字母数目
2,实现输入:使用input()
3,输出英文字母数目:可以借用集合的不可重复的特性,将变量转换成集合,再输出集合的长度即可
代码如下
a = input("请输入小写英文字母")
a_set = set(a)
print(len(a_set))
输入字母abbbccddeeffggg,输出为
7
问题6:
有如下两个列表:lst1 = [1, 2, 3, 2, 5, 1, 2],lst2 = [2, 7, 9, 5]
编程实现:6.1,求哪些整数既在lst1中,也在lst2中;6.2,求哪些整数在lst1中,不在lst2中;6.3,求两个列表一共有哪些整数
6.1分析
其实就是找交集,可以先转换成集合,然后借用集合的关系测试特性
6.2分析
同6.1,只是找lst1相对于lst2的差集
6.3分析
同6.1,求并集,然后打印出来即可
代码如下
lst1 = [1, 2, 3, 2, 5, 1, 2]
lst2 = [2, 7, 9, 5]
lst1_set = set(lst1)
lst2_set = set(lst2)
# 6.1
print(lst1_set & lst2_set)
#6.2
print(lst1_set - lst2_set)
#6.3
print(lst1_set | lst2_set)
输出为
{2, 5}
{1, 3}
{1, 2, 3, 5, 7, 9}