大神们 列表问题 课后作业
动动手题目 :题目给定的列表是: ,其中占比超过一半的元素称之为主要元素
一下是自己的解题方式
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: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:} 你自创的方法b = set(nums)让我耳目一新!!!!牛逼!!!
然后就是,你这个参考答案水平太搞了,我也没看懂 ,太牛逼; 哈哈 ,我想到了一个更简单的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') 楼主你的这样改就对了,如果有主要元素就打印并跳出循环
如果到最后都没有跳出循环,就打印没有主要元素
nums =
b = set(nums) # 将不重复的元素提取出来
for each in b:
if nums.count(each) > len(nums) /2 :
print("主要元素是",each)
break
else:
print('没有主要元素') qq1151985918 发表于 2021-9-17 09:26
楼主你的这样改就对了,如果有主要元素就打印并跳出循环
如果到最后都没有跳出循环,就打印没有主要元素
原来是这样啊, 一直以为 if 和else 只能在一个缩进里,你的{:5_106:}答案是我能看得最懂的{:5_106:} 小伤口 发表于 2021-9-17 00:00
第二个问题
half其实就是主要元素(如果存在的情况下)
主要元素占一半 所以nums[ ...
好详细啊,谢谢{:5_92:} 小伤口 发表于 2021-9-17 00:00
第二个问题
half其实就是主要元素(如果存在的情况下)
主要元素占一半 所以nums[ ...
请问nums这个不是代表nums的索引值吗?比如最后是nums
或者说half = nums 是不是就是先赋一个值啊?具体是多少随便的
luck78 发表于 2021-9-17 10:25
请问nums这个不是代表nums的索引值吗?比如最后是nums
或者说half = nums
nums就是取nums列表里中间的值然后赋给haif
页:
[1]