Python程序:删除数组/列表中所有元素的出现次数
数组是一组存储在连续内存地址中的同质数据类型元素的集合。Python不支持内置数组。如果需要使用数组,可以导入“array”模块或使用numpy库中的数组。
在Python中,我们可以使用列表代替数组。但是,我们无法限制列表中的元素必须是相同的数据类型。
给定任务是删除数组/列表中一个元素的所有出现次数。也就是说,我们需要除去指定的元素,包括重复元素。让我们通过考虑输入输出的情况来了解它是如何工作的。
输入输出场景
考虑一个包含一个或多个重复元素(重复元素)的列表。
my_list = [ 1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10 ].
现在,假设我们需要删除元素10。 我们可以清楚地看到元素 10 存在于列表中,并且它重复了5次。除去所有的出现次数,所得到的列表将是 –
my_list = [ 1, 20, 21, 16, 18, 22, 8 ].
有不同的方法可以从Python列表中删除元素。让我们逐一讨论它们。
使用Remove()方法
Python中的remove()方法接受一个单个值,表示列表中的元素作为参数,并将其从当前列表中删除。为了使用此方法删除所有出现情况,我们需要将所需元素与列表中的所有其他元素进行比较,并在发生匹配时调用remove()方法。
例子
在此示例中,我们将创建一个元素列表,并使用remove() 方法 删除值为10的所有出现次数。
def removing_elements(my_list, element):
element_count = my_list.count(element)
for i in range(element_count):
my_list.remove(element)
return my_list
if __name__ == "__main__":
my_list = [1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
element = 10
print("The list before performing the removal operation is: ")
print(my_list)
result = removing_elements(my_list, element)
print("The list after performing the removal operation is: ")
print(result)
输出
以上程序的输出如下 –
The list before performing the removal operation is:
[1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
The list after performing the removal operation is:
[1, 20, 21, 16, 18, 22, 8]
使用列表推导式
技术 “列表推导式” 是由一个冗长的单行语句组成,可以执行整个任务。使用此方法可以构造一个新的列表,以便在满足给定的基础条件时,可以存储其余的元素。
在这里,我们搜索所需的元素,一旦找到它,我们就构造另一个列表,使匹配的元素被排除在外,也就是说,除了匹配的元素之外,其他所有元素都将存储在新构造的列表中,最终被视为结果列表。
例子
让我们来看一个例子-
def removing_elements(my_list, element):
result = [i for i in my_list if i != element]
return result
if __name__ == "__main__":
my_list = [1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
element = 10
print("执行删除操作前列表为:")
print(my_list)
result = removing_elements(my_list, element)
print("执行删除操作后列表为:")
print(result)
输出
以上程序的输出结果如下 –
执行删除操作前列表为:
[1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
执行删除操作后列表为:
[1, 20, 21, 16, 18, 22, 8]
使用 “Filter()” 方法
filter() 方法接受一个函数和一个可迭代对象作为参数,并根据函数描述的条件过滤给定可迭代对象的元素。
在这里,使用 filter() 和 ne (即不等运算符的功能) 方法,我们可以过滤出列表中不等于要删除元素的元素。
举个例子
在这个例子中,我们使用 filter() 方法删除列表中特定元素的所有出现。
def removing_elements(my_list, element):
result = list(filter((element).__ne__, my_list))
return result
if __name__ == "__main__":
my_list = [1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
element = 10
print("执行删除操作前列表为:")
print(my_list)
result = removing_elements(my_list, element)
print("执行删除操作后列表为:")
print(result)
输出
以上程序的输出结果如下 –
执行删除操作前列表为:
[1, 10, 20, 10, 21, 16, 18, 10, 22, 10, 8, 10]
执行删除操作后列表为:
[1, 20, 21, 16, 18, 22, 8]