Python 3.x 从python数组中删除所有元素
1) 我正在研究的问题是: 为名为removeAll的函数编写一个算法,该函数接受3个参数:数组类型的数组、数组中元素的计数和值。与我们在类中讨论的remove方法一样,通过元素计数的元素存储为None。此函数应删除所有出现的值,然后向下移动其余数据。然后,应将数组中最后填充的元素设置为“无”。然后,该函数返回剩余的“有效”(即未删除)数据元素的计数。此功能应“手动”进行删除,而不应使用删除方法 2) 下面是我认为对这个问题有效的方法,但它似乎效率低下且重复。有什么办法可以简化它吗 ''' “”“ “”“ “”“ “”“Python 3.x 从python数组中删除所有元素,python-3.x,Python 3.x,1) 我正在研究的问题是: 为名为removeAll的函数编写一个算法,该函数接受3个参数:数组类型的数组、数组中元素的计数和值。与我们在类中讨论的remove方法一样,通过元素计数的元素存储为None。此函数应删除所有出现的值,然后向下移动其余数据。然后,应将数组中最后填充的元素设置为“无”。然后,该函数返回剩余的“有效”(即未删除)数据元素的计数。此功能应“手动”进行删除,而不应使用删除方法 2) 下面是我认为对这个问题有效的方法,但它似乎效率低下且重复。有什么办法可以简化它吗 ''' “”
“”“您可以根据值是否等于孔值对列表进行排序
l = [8, 'N', 24, 16, 1, 'N']
sorted(l, key=lambda x: x == 'N')
输出:
[8, 24, 16, 1, 'N', 'N']
如果需要None
而不是输出中的孔值,请使用列表理解,然后首先基于None进行排序
l = [i if i != 'N' else None for i in [8, 'N', 24, 16, 1, 'N']]
sorted(l, key=lambda x: x == None)
[8, 24, 16, 1, None, None]
然后剩下的就是加上计数,你只需要计算有多少元素是无的,然后从你的输入参数中减去
def myremove(mylist, elements, val):
ret_list = sorted([i if i != val else None for i in mylist], key=lambda x: x == None)
return ret_list, elements - ret_list.count(None)
@L3viathan-谢谢,我只是想测试一下,在将其添加到我的答案之前,在排序之前还是之后这样做更好
[8, 24, 16, 1, 'N', 'N']
l = [i if i != 'N' else None for i in [8, 'N', 24, 16, 1, 'N']]
sorted(l, key=lambda x: x == None)
[8, 24, 16, 1, None, None]
def myremove(mylist, elements, val):
ret_list = sorted([i if i != val else None for i in mylist], key=lambda x: x == None)
return ret_list, elements - ret_list.count(None)