使用Python程序删除带有重复数字的数字

使用Python程序删除带有重复数字的数字

在本文中,我们将学习如何在Python中删除带有重复数字的数字。

使用的方法

以下是完成此任务的各种方法:

  • 使用列表推导和set()函数

  • 使用re模块

  • 使用Counter()函数

例子

假设我们已经取了一个包含数字的输入列表。现在我们将通过上述方法删除列表中所有包含重复数字的数字,并返回结果列表。

输入

inputList = [3352, 8135, 661, 7893, 99]

输出

[8135, 7893]

在上述输入列表中,第一个元素3352中,数字3重复出现了两次,因此它被删除了。但是8135没有重复数字,因此它被保留。同样,661和99由于包含重复字符而被删除。

因此,输出列表仅包含8135和7893元素。

方法1:使用列表推导和set()函数

len() − len()方法返回对象中的项目数。当对象是字符串时,len()函数返回字符串中的字符数。

set() 函数(创建一个set对象。由于项目没有排序,所以set列表将以随机顺序出现。它会删除所有重复项)

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 创建一个变量以存储 input list 并打印给定的列表。

  • 使用列表推导穿过给定列表的数字(元素)。

  • 使用str()函数将每个数字转换为字符串(将其转换为字符串的格式)。

  • 使用set()函数将该数字字符串转换为集合,以删除数字的重复数字。

  • 检查字符串(数字)的长度是否等于上述集合的长度。

  • input list 中删除包含重复数字的元素后,打印结果列表。

例子

以下程序使用列表推导和set()函数从输入列表中删除包含重复数字的数字后返回结果列表:

# input list
inputList = [3352, 8135, 661, 7893, 99]

# 打印输入列表
print("Input list: ", inputList)

# 使用列表推导穿过给定数字列表。
# 将数字转换为字符串并找到字符串集(删除重复项)。
# 检查集合的长度是否等于数字的长度。
resultList = [i for i in inputList if len(set(str(i))) == len(str(i))]

# 打印:从给定列表中删除具有重复数字的元素后的结果列表。
print("Resultant list after removing elements with repeating digits:")
print(resultList)

输出

在执行以上程序后,将生成以下输出:

Input list: [3352, 8135, 661, 7893, 99]
Resultant list after removing elements with repeating digits:
[8135, 7893]

时间复杂度 – O(n)

辅助空间 – O(n)

方法2:使用re模块

re.compile()方法

正则表达式模式可以组合为模式对象,然后可以使用该模式匹配来查找模式。re.compile()方法还可以在不重写模式的情况下再次搜索模式。

语法

re.compile(pattern, repl, string):

re.search()函数

在整个目标字符串中查找正则表达式模式的出现,并返回找到匹配的适当Match Object实例。 它仅返回从目标字符串中匹配到的第一个模式匹配。

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 使用import关键字导入re模块(正则表达式)。
  • 使用re模块的compile()函数,将正则表达式模式提供为删除具有重复数字的元素。
  • 遍历列表的元素,并使用search()函数检查列表元素是否与上述正则表达式模式匹配。

示例

以下程序通过使用re.complie()和re.search()函数从输入列表中删除包含重复数字的数字,返回结果列表

# import re module 导入re模块
import re

# input list 定义输入列表
inputList = [3352, 8135, 661, 7893, 99]

# printing the input list 打印输入列表
print("Input list: ", inputList)

# regex pattern to remove elements with repeating digits 删除重复数字元素的正则表达式模式
regexPattern = re.compile(r"(\d).*\1")

# Checking list elements for the above regex pattern matches 检查列表元素是否与上述正则表达式模式匹配
resultList = [i for i in inputList if not regexPattern.search(str(i))]

# printing resultant list after removing elements with repeating digits 删除重复数字元素后打印结果列表
print("Resultant list after removing elements with repeating digits:")
print(resultList)

输出

执行上述程序将生成以下输出:

Input list: [3352, 8135, 661, 7893, 99]
Resultant list after removing elements with repeating digits:
[8135, 7893]

时间复杂度- O(n)

辅助空间-O(n)

方法3: 使用Counter()函数

Counter()函数是一个子类(计算可哈希对象的哈希值)。 当调用/调用它时,它隐含地创建一个可迭代的哈希表。

示例

以下程序通过使用Counter()函数从输入列表中删除包含重复数字的数字,返回结果列表

# importing a Counter function from the collections module 从集合模块导入计数器函数
from collections import Counter

# input list 定义输入列表
inputList = [3352, 8135, 661, 7893, 99]

# printing the input list 打印输入列表
print("Input list: ", inputList)

# Counter gives the unique keys(digits) of the number 通过Counter()获得数字的唯一键(数字)
resultList = [i for i in inputList if len(Counter(str(i))) == len(str(i))]

# printing resultant list after removing elements with repeating digits 删除重复数字元素后打印结果列表
print("Resultant list after removing elements with repeating digits:")
print(resultList)

输出

执行上述程序将生成以下输出:

Input list: [3352, 8135, 661, 7893, 99]
Resultant list after removing elements with repeating digits:
[8135, 7893]

时间复杂度- O(n)

辅助空间-O(n)

这里使用Counter()方法给出数字的每个数字的频率。 因此,给定数字的唯一键(数字)就是计数器返回的唯一键。 然后比较给定数字长度的唯一数字数量进行比较。

结论

本文介绍了3种不同的方法来从列表中删除具有重复数字的整数。 此外,我们还学习了如何使用regex模块在可迭代对象中查找模式匹配。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程