21讲动动手问题
题目:0. 如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢题目给定的列表是:
自己想的思路:
num =
pert = []
num.sort() #从小到大排列
n = len(num)
for ag in range(n):
if num != num: # ag 的值不等于 num下标的值 执行
num.remove(num) # 把当前值从num列表删除
else: #等于num的值时
pert.append(num) #把当前值添加到penrt,列表内
if pert > num: # 新列表的数 > 原列表的数说明该数的,中间元素为主要元素
print("中间元素为主要元素!")
else:
print("不存在主要元素T_T")
运行结果:IndexError: list index out of range(列表索引超出范围)
疑惑:为什么索引会超出范围?,需要怎么样修改? nums =
max = 0
elem = None
for i in nums:
if nums.count(i) > max:
elem = i
max = nums.count(i)
print(f"主要元素是:{elem}") 最优化代码:nums =
print(f"主要元素是:{max({key: nums.count(key) for key in set(nums)}, key = {key: nums.count(key) for key in set(nums)}.get)}") 傻眼貓咪 发表于 2021-12-11 16:52
懂了,谢谢啦 {:5_109:} 傻眼貓咪 发表于 2021-12-11 19:12
脑子短路了{:10_262:},请问如何利用append() 与 remove() 两个列表对象,求上面这一题? 做最好的自己520 发表于 2021-12-11 19:35
脑子短路了,请问如何利用append() 与 remove() 两个列表对象,求上面这一题?
比较不建议在 for 循环里用 pop 或 remove,因为如果一个不谨慎,循环肯定会影响数值(因为每次是以这次位置+1做为下次循环对象,如果 remove 了或 pop 了,位置全部就乱了,除非超级谨慎,并且知道 remove 后真正位置) 傻眼貓咪 发表于 2021-12-11 19:50
比较不建议在 for 循环里用 pop 或 remove,因为如果一个不谨慎,循环肯定会影响数值(因为每次是以这次 ...
是的难怪,搞了半天都,在报错无语了,谢谢
页:
[1]