luck78 发表于 2021-9-16 23:28:49

大神们 列表问题 课后作业

动动手题目 :
题目给定的列表是: ,其中占比超过一半的元素称之为主要元素

一下是自己的解题方式
nums =

b = set(nums) # 将不重复的元素提取出来

for each in b:
    if nums.count(each) > len(nums) /2 :
      print("主要元素是",each)
   else:
       print('没有主要元素')

1.但输出结果会将每种元素的结果都一起打印出来,怎么才能将最终的一种结果打印出来?


这是参考答案:
nums =
   
nums.sort()
length = len(nums)
half = nums
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:00:36

本帖最后由 小伤口 于 2021-9-17 00:03 编辑

nums =

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就是取中间的值中间值必然是主要元素(如果存在的情况下)

所以
for each in nums:
    if each == half:
      count += 1
就是
检查 主要元素(如果存在的情况下)占比是否过半

for each in nums:
    if each == half:
通过for循环将每个列表的值与haif这个主要元素看是否相等
如果相等count就加1
count这个变量就是起计数的作用,然后通过count验证haif这个主要元素是否存在
{:5_103:} {:5_103:} {:5_103:}

Python初学者8号 发表于 2021-9-17 08:46:55

你自创的方法b = set(nums)让我耳目一新!!!!牛逼!!!

然后就是,你这个参考答案水平太搞了,我也没看懂 ,太牛逼;

Python初学者8号 发表于 2021-9-17 09:14:48

哈哈 ,我想到了一个更简单的nums =
freq =
main = max(freq) if max(freq) > (len(nums)//2) else 0

if main :
    print('the main element is :',nums)
else:
    print('sorry , there is no main element')

qq1151985918 发表于 2021-9-17 09:26:33

楼主你的这样改就对了,如果有主要元素就打印并跳出循环
如果到最后都没有跳出循环,就打印没有主要元素
nums =

b = set(nums) # 将不重复的元素提取出来

for each in b:
    if nums.count(each) > len(nums) /2 :
      print("主要元素是",each)
      break
else:
    print('没有主要元素')

luck78 发表于 2021-9-17 10:05:41

qq1151985918 发表于 2021-9-17 09:26
楼主你的这样改就对了,如果有主要元素就打印并跳出循环
如果到最后都没有跳出循环,就打印没有主要元素

原来是这样啊, 一直以为 if 和else 只能在一个缩进里,你的{:5_106:}答案是我能看得最懂的{:5_106:}

luck78 发表于 2021-9-17 10:09:27

小伤口 发表于 2021-9-17 00:00
第二个问题
         half其实就是主要元素(如果存在的情况下)
         主要元素占一半 所以nums[ ...

好详细啊,谢谢{:5_92:}

luck78 发表于 2021-9-17 10:25:23

小伤口 发表于 2021-9-17 00:00
第二个问题
         half其实就是主要元素(如果存在的情况下)
         主要元素占一半 所以nums[ ...

请问nums这个不是代表nums的索引值吗?比如最后是nums
或者说half = nums   是不是就是先赋一个值啊?具体是多少随便的
      

小伤口 发表于 2021-9-17 15:27:46

luck78 发表于 2021-9-17 10:25
请问nums这个不是代表nums的索引值吗?比如最后是nums
或者说half = nums

nums就是取nums列表里中间的值然后赋给haif
页: [1]
查看完整版本: 大神们 列表问题 课后作业