我正在CodeWars中解决一些katas,在当前katas中,我试图获取在我设置为参数的列表中某个元素发生了多少次,然后将其用作for循环的范围
但是,当我调用该函数时,它会返回:
File "<pyshell#8>", line 3, in delete_nth
if order.count(item) > max_e:
AttributeError: 'NoneType' object has no attribute 'count'
这是我的代码
def delete_nth(order,max_e):
for item in order:
if order.count(item) > max_e:
for i in range(order.count(item) - max_e):
order = order.remove(item)
return order
l = [20,37,20,21]
delete_nth(l,1) #except [20,37,21]
答案 0 :(得分:1)
问题是这个陈述
order = order.remove(item)
删除项目后,您无需重新分配列表。
并且list.remove返回None,它是导致错误的原因。
因此将其编辑为:
order.remove(item)
答案 1 :(得分:0)
问题在于,即使您正在迭代order
,也要对其进行更改。您不应该这样做。如果要创建现有列表的副本并进行修改。
remove
函数不会返回任何内容,因此实际上没有任何内容被分配给order
。
def delete_nth(order,max_e):
for item in order:
if order.count(item) > max_e:
for i in range(order.count(item) - max_e):
order = order.remove(item) ======> order becomes None as remove returns None.
return order