Python中给列表除重(去除重复元素)的方法—有两种方法

1、方法一:利用Python内置函数set()

(1)set的含义

是一个不允许内容重复的组合,而且set里的内容位置是随意的,所以不能用索引列出。可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

(2)set()用法

代码如下:

set1 = set([1, 2, 3, 4, 5, 6, 7, 8])
print('set1:', set1)
set2 = set('Hello')
print('set2:', set2)
set3 = set('1233672')
print('set3:', set3)

输出结果如下:

set1: {1, 2, 3, 4, 5, 6, 7, 8}
set2: {'H', 'e', 'l', 'o'}
set3: {'2', '7', '1', '6', '3'}

(3)set给列表除重实例(除重并排序)

假如现在有两个列表x和y,如下所示:

x = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]
y = [2, 126, 65, 28, 9, 513, 344, 217, 2, 126, 65, 28, 9, 513, 344, 217]

现在想对列表x和y中的元素进行排序(按照升序排序),排序完成后再进行除重。代码如下:

x = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]
y = [2, 126, 65, 28, 9, 513, 344, 217, 2, 126, 65, 28, 9, 513, 344, 217]
x_sorted = sorted(x)
y_sorted = sorted(y)
print('x_sorted:', x_sorted)
print('y_sorted:', y_sorted)
x_sorted_kind_1 = list(set(x_sorted))
print('x_sorted_kind_1:', x_sorted_kind_1)
y_sorted_kind_1 = list(set(y_sorted))
print('y_sorted_kind_1:', y_sorted_kind_1)

输出结果如下:

x_sorted: [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8]
y_sorted: [2, 2, 9, 9, 28, 28, 65, 65, 126, 126, 217, 217, 344, 344, 513, 513]
x_sorted_kind_1: [1, 2, 3, 4, 5, 6, 7, 8]
y_sorted_kind_1: [65, 2, 513, 9, 344, 217, 28, 126]

由输出结果可知,虽然x_sorted_kind_1按照我们想要的格式输出了,但是y_sorted_kind_1并没有按照我们想要的格式输出,所以利用set()方法除重并排序存在bug。

2、方法二:利用Python中的for循环和if条件语句

代码如下:

x = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]
y = [2, 126, 65, 28, 9, 513, 344, 217, 2, 126, 65, 28, 9, 513, 344, 217]
x_sorted = sorted(x)
y_sorted = sorted(y)
print('x_sorted:', x_sorted)
print('y_sorted:', y_sorted)
x_sorted_kind_2 = []
for i in x_sorted:
    if i not in x_sorted_kind_2:
        x_sorted_kind_2.append(i)
print('x_sorted_kind_2:', x_sorted_kind_2)

y_sorted_kind_2 = []
for i in y_sorted:
    if i not in y_sorted_kind_2:
        y_sorted_kind_2.append(i)
print('y_sorted_kind_2:', y_sorted_kind_2)

输出结果如下:

x_sorted: [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8]
y_sorted: [2, 2, 9, 9, 28, 28, 65, 65, 126, 126, 217, 217, 344, 344, 513, 513]
x_sorted_kind_2: [1, 2, 3, 4, 5, 6, 7, 8]
y_sorted_kind_2: [2, 9, 28, 65, 126, 217, 344, 513]

结论:法二不存在bug,比法一更加安全可靠!

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐