方法一:
思路:用两个变量first和scend分别存储列表中最大的数和第二大的数(初始值默认为列表第一个数和第二数)。利用for循环遍历整个列表(除开前两个元素,因为已经被first和scend取走了),从第三个元素开始取,先后和scend和first比较,通过判断大小不断更新first的值和scend的值:
若列表中取出的数比first和scend都大,则将first赋值给scend,将该元素赋值个first;
若列表中取出的数比scend大,比first小,则将该元素赋值给scend;
否则first和scend不变。
最后输出scend即可。
代码如下:
#导入随机生成模块
import random
#建立一个空列表,用于存储元素
nums = []
#for循环随机添加0~1000之间的10个整数
for _ in range(10):
nums.append(random.randrange(1000))
#用于获取列表中最大的数和第二大的数
first = nums[0]
scend = nums[1]
if first < scend:
t = first
first = scend
scend = t
print('原数组:',nums)
for i in range(len(nums)):
if i == len(nums) - 1:
break
if nums[i + 1] > scend:
if nums[i + 1] > first:
scend = first
first = nums[i + 1]
else:
scend = nums[i + 1]
print('最大的两个数',first, scend)
结果如图(因为是随机生成的数组,所以每次元素都不一样):
方法二:
当然也可以使用list的内置函数sort()排序:
#导入随机生成模块
import random
#建立一个空列表,用于存储元素
nums = []
#for循环随机添加0~1000之间的10个整数
for _ in range(10):
nums.append(random.randrange(1000))
#使用sort对列表进行排序,True代表降序, False代表升序
nums.sort(reverse=True)
print('使用内置函数排序',nums)
print('排序后输出第二个元素',nums[1])
结果如下:
是不是比前者方便很多
方法三
思路:使用max方法找到最大数,并且删除,然后再次使用max找最大数,此时得到的数为原列表中第二大的数
# 导入随机生成模块
import random
# 建立一个空列表,用于存储元素
nums = []
# for循环随机添加0~1000之间的10个整数
for _ in range(10):
nums.append(random.randrange(1000))
print(f'随机生成的列表元素:{nums}')
nums.remove(max(nums))
print(f'第二大的元素:{max(nums)}')
结果如下:
如果大家还有其他的方法,欢迎一起交流学习哦