| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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这个主要元素是否存在
        
 
 
 |   
 
 
 
 |