本文已参与「新人创作礼」活动,一起开启掘金创作之路。
例题4-1
给定一个由10个整数值构成的列表[10,9,8,7,6,5,4,3,2,1],编程只对列表中下标为偶数的元素进行升序排列。
原来序列: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
偶数下标升序: [2, 9, 4, 7, 6, 5, 8, 3, 10, 1]
#原来的数组
list1=[10,9,8,7,6,5,4,3,2,1]
#将list1中的数据进行切片,取到偶数位置的数据,存放到list2中
#[::2]表示从第一个位置开始,到最后一个位置结束,步长为2,也就是取偶数的位置的数据
list2=list1[::2]
#输出list2中数据查看,为[10,8,6,4,2]
print("获取到偶数位置的数据:",list2)
#对list2中的数据进行升序排序,调用sort方法,默认为升序
list2.sort()
#打印查看list2排序后的数据
print("排序后list2中的数据:",list2)
#将list2中的数据放回list1的偶数位置
list1[::2]=list2
#将最终结果打印出来
print("最后的结果为:",list1)
例题4-2
用户分别从键盘输入4个整数和3个整数组成两个列表list1和list2,
将列表list2合并到list1中,并在list1末尾再添加两个数字90和100,
然后对list1降序排列,最后输出最终的列表list1。
list1 = []
list2 =[]
print("列表1:")
for i in range(4):
x = int(input("请输入第"+str(i+1)+"个整数:"))
list1 += [x]
print("列表2:")
for i in range(3):
y = int(input("请输入第"+str(i+1)+"个整数:"))
list2.append(y)
print("list1:",list1)
print("list2:",list2)
list1.extend(list2)
print("list2合并到list1后的数据:",list1)
list1.sort(reverse=True)
print("list1降序排列后的数据为:",list1)
print("请你输入要增加的两个数据:")
for i in range(2):
x = int(input("请输入第"+str(i+1)+"个要加入的整数:"))
list1.append(x)
print("加上输入的"+str(list1[-2])+" "+str(list1[-1])+"后的list1:",list1)
list1.sort(reverse=True)
print("list1降序排列后的数据为:",list1)
例题4-2思考题
思考1:列表list2合并到list1中可以用此语句list1=list1+list2实现吗?
可以的,list1=list1+list2就是将list2中的数据加到list1的末尾,
实现合并,和extend函数实现的功能是一样的。不过两者有区别:
list1=list1+list2是返回一个新的列表,最后的list1和之前的list1指向的内存空间并不一致, 而extend是对原来的list1进行操作,还是原来的内存地址。
思考2:在list1末尾再添加两个数字90和100可以用append吗?如果可以,如何实现?
可以通过两次调用append函数,将90和100增加到list1的末尾。
list1.append(90)
list1.append(100)
例题4-3
某公司股票近一段时间的收盘价(单位:元)分别为:
12.04, 11.15, 13.47 , 13.58, 12.04, 12.04, 11.15, 12.58, 11.15,
请建立一个列表(data)存储这些数据。请编写程序解决如下问题:
上述一共有几个数据?
统计收盘价为12.04元的次数;
找出收盘价中的最小数据,并删除首次出现的最小数据,最后显示列表data。
data = [12.04,11.15,13.47,13.58,12.04,12.04,11.15,12.58,11.15]
print("共有"+str(len(data))+"个数据,分别为:",data)
print("收盘价为12.04的次数为:",data.count(12.04))
x = min(data)
print("收盘价中最小的数为:",x)
data.remove(x)
print("删除首次出现最小的数据后的列表",data)
例题4-3思考题:
如果是删除所有出现的最小数据程序如何实现?
思路:可以用count方法获取到最小数据的出现次数,然后用一层循环,调用remove去掉最小的数据。
data = [12.04,11.15,13.47,13.58,12.04,12.04,11.15,12.58,11.15]
print("共有"+str(len(data))+"个数据,分别为:",data)
print("收盘价为12.04的次数为:",data.count(12.04))
x = min(data)
print("收盘价中最小的数为:",x)
for i in range(data.count(x)):
data.remove(x)
print("删除所有出现最小的数据后的列表",data)