|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
s
[2, 2, 4, 2, 3, 6, 2]
>>> s.sort()
>>> s
[2, 2, 2, 2, 3, 4, 6]
>>> for i in s:
if i ==s[len(s)//2]:
print("存在主要元素,是:",i)
break
else:
continue
else:
print("不存在主要元素")
我这样成功了是凑巧还是逻辑上是正确的
本帖最后由 jackz007 于 2025-3-31 17:59 编辑
楼主的成功纯属巧合,所谓主要元素的定义是,其数量(个数)必须占到列表元素数量的一半以上。而楼主的代码,任意给出一个列表,都会给出 "存在主要元素" 的判断,因为这个判断:
- for i in s:
- if i == s[len(s) // 2]
复制代码
只要枚举到列表索引一半的位置,这个判断铁定成立,不信,你可以用 s = [1 , 2 , 3 , 4 , 5 , 6 , 7] 来进行测试。
- s = [1,2,3,4,5,6,7]
- s . sort()
- for i in s :
- if i == s[len(s) // 2] :
- print('存在主要元素:' , s[len(s) // 2])
- break
- else:
- print('不存在主要元素')
复制代码
正确的代码应该是:
- s = [2, 2, 4, 2, 3, 6, 2]
- s . sort()
- if s . count(s[len(s) // 2]) >= len(s) // 2 : # 经过排序后,如果存在主元素,则一定会在出现在列表索引居中的位置,只要统计列表中这个元素的数量即可以进行判定。
- print('存在主要元素:' , s[len(s) // 2])
- else:
- print('不存在主要元素')
复制代码
如你所见,根本用不着循环。
|
|