|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第021讲:列表(III)| 课后测试题
0. 如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢?
题目给定的列表是:[2, 2, 4, 2, 3, 6, 2]
为什么不直接写成这样
nums = [2, 2, 4, 2, 3, 6, 2,7]
nums.sort()
length = len(nums)
half = nums[length // 2]
if half==nums[0]:
print("存在主要元素,是:", half)
else:
print("不存在主要元素")
我认为把列表中的元素排列,只要第一个元素等于nums[length // 2]就可以说第一个元素就可以认定塔是主要元素了呀,为什么还要像答案一样多次一举去再计算一下该数量和列表元素数量的一半相比较呀
本帖最后由 jackz007 于 2025-9-11 16:19 编辑
用你的代码试试下面三种情况呢:
- nums = [3, 3, 4, 3, 2, 6, 3, 7]
- nums = [4, 4, 2, 4, 3, 6, 4, 7]
- nums = [6, 6, 4, 6, 3, 2, 6, 7]
复制代码
看看结果是否还是正确的?
你的代码只有在主要元素恰好是列表中最小值的时候才是对的,否则,一定是错的!
可以根据 nums 在排序后,与中位数同值元素的数量是否过半进行判断:
- nums = [2, 2, 4, 2, 3, 6, 2, 7]
- k = (len(nums) - 1) // 2 # k 为 nums 元素数量的一半,同时,也是 nums 中位数的索引。
- nums . sort()
- if nums . count(nums[k]) > k : # 如果 nums 中,nums[k] 的个数过半。
- print('存在主要元素 : %d' % nums[k])
- else :
- print('不存在主要元素')
复制代码
|
|