[英]Removing certain element in a list if element is multiples of a certain number
我想从列表中删除5的倍数的元素。 在“ ######”下面的代码中,我尝试了>> number_list.pop(i),它显示索引超出范围错误。 我也尝试过>> return number_list.pop(i),它似乎只删除了第一个数字25。main()中的代码已给出,我需要完成该功能。 我可以通过创建另一个列表并存储不是5的倍数的数字来轻松完成此操作,但是看来我必须使用给定的列表“数字”来弄清楚。 如果能在此编码方面获得一些帮助,将不胜感激。 谢谢。
ps。 使用python 3.5
def main():
numbers = [25, 5, 9, 10, 15, 8]
print(numbers)
remove_multiples(numbers, 5) # remove multiples of 5
print("Numbers left", numbers)
def remove_multiples(number_list, multiples_of):
for i in range(len(number_list)):
if number_list[i] % multiples_of == 0:
###################
return number_list
main()
def remove_multiples(number_list, multiples_of):
pivot = 0
for i,value in enumerate(number_list):
if value % multiples_of != 0:
number_list[pivot] = value
pivot += 1
del number_list[pivot:]
return number_list
将可用元素移到最前面,然后删除其余元素
def main():
numbers = [25, 5, 9, 10, 15, 8]
print(numbers)
remove_multiples(numbers, 5) # remove multiples of 5
print("Numbers left", numbers)
def remove_multiples(number_list, multiples_of):
for i in number_list:
if i % multiples_of == 0:
number_list.remove(i)
return number_list
main()
希望这就是您想要的。
从当前正在迭代的列表中删除元素绝不是一个好主意。
而是使用列表理解来创建并返回没有不必要元素的新列表:
def remove_multiples(number_list, multiples_of):
return [num for num in number_list if num % multiples_of != 0]
print remove_multiples([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2)
>> [1, 3, 5, 7, 9]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.