|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
动动手题目 :
题目给定的列表是:[2, 2, 4, 2, 3, 6, 2] ,其中占比超过一半的元素称之为主要元素
一下是自己的解题方式
nums =[2,2,4,2,3,6,2]
b = set(nums) # 将不重复的元素提取出来
for each in b:
if nums.count(each) > len(nums) /2 :
print("主要元素是",each)
else:
print('没有主要元素')
1. 但输出结果会将每种元素的结果都一起打印出来,怎么才能将最终的一种结果打印出来?
这是参考答案:
- nums = [2, 2, 4, 2, 3, 6, 2]
-
- nums.sort()
- length = len(nums)
- half = nums[length // 2]
- count = 0
-
- for each in nums:
- if each == half:
- count += 1
- if count > length / 2:
- print("存在主要元素,是:", half)
- else:
- print("不存在主要元素!")
复制代码
我不明白
for each in nums:
if each == half:
count += 1
2. 这个是什么意思?
求助各位大神帮忙解释一下这个2个问题
本帖最后由 小伤口 于 2021-9-17 00:03 编辑
- nums =[2,2,4,2,3,6,2]
- b = set(nums) # 将不重复的元素提取出来
- main=0#将主要元素放在main变量里,所以初始值随便给
- yanZhen=False#验证有没有主要元素
- for each in b:
- if nums.count(each) > len(nums) /2 :
- main=each
- yanZhen=True
-
- if yanZhen:
- print("主要元素是",main)
- else:
- print("没有主要元素")
- """
- 因为for循环会重复执行,所以你的结果会不断打印
- 因此将你的判断结果放在for循环外面,然后判断就可以了
- """
复制代码
第二个问题
half其实就是主要元素(如果存在的情况下)
主要元素占一半 所以nums[length // 2]就是取中间的值中间值必然是主要元素(如果存在的情况下)
所以
- for each in nums:
- if each == half:
- count += 1
复制代码
就是
检查 主要元素(如果存在的情况下)占比是否过半
- for each in nums:
- if each == half:
复制代码
通过for循环将每个列表的值与haif这个主要元素看是否相等
如果相等count就加1
count这个变量就是起计数的作用,然后通过count验证haif这个主要元素是否存在
|
|