Python如何实现列表去重复项

发布时间:2022-06-01 11:34:00 作者:zzz
来源:亿速云 阅读:188

Python如何实现列表去重复项

在Python编程中,列表(List)是一种非常常用的数据结构,它可以存储多个元素,并且这些元素可以是不同类型的。然而,在实际应用中,我们经常会遇到列表中包含重复项的情况。为了处理这些重复项,Python提供了多种方法来实现列表去重。本文将详细介绍这些方法,并通过示例代码帮助读者更好地理解和掌握这些技巧。

1. 使用集合(Set)去重

集合(Set)是Python中的一种内置数据类型,它的特点是元素唯一且无序。因此,我们可以利用集合的这一特性来实现列表去重。

1.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用集合去重
unique_list = list(set(original_list))

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

1.2 注意事项

2. 使用列表推导式去重

列表推导式是Python中一种简洁的创建列表的方法。我们可以利用列表推导式来实现列表去重,同时保持原有顺序。

2.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用列表推导式去重
unique_list = []
[unique_list.append(x) for x in original_list if x not in unique_list]

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

2.2 注意事项

3. 使用dict.fromkeys()方法去重

在Python 3.7及以上版本中,字典(Dictionary)的键是有序的。我们可以利用这一特性,通过dict.fromkeys()方法来实现列表去重,并保持原有顺序。

3.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用dict.fromkeys()方法去重
unique_list = list(dict.fromkeys(original_list))

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

3.2 注意事项

4. 使用itertools.groupby()方法去重

itertools.groupby()是Python标准库itertools中的一个函数,它可以对可迭代对象进行分组。我们可以利用这一函数来实现列表去重。

4.1 基本用法

from itertools import groupby

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用itertools.groupby()方法去重
unique_list = [k for k, g in groupby(sorted(original_list))]

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

4.2 注意事项

5. 使用pandas库去重

pandas是Python中一个强大的数据处理库,它提供了丰富的数据结构和函数。我们可以利用pandas库中的drop_duplicates()方法来实现列表去重。

5.1 基本用法

import pandas as pd

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用pandas库去重
unique_list = pd.Series(original_list).drop_duplicates().tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

5.2 注意事项

6. 使用numpy库去重

numpy是Python中一个常用的科学计算库,它提供了高效的数组操作函数。我们可以利用numpy库中的unique()函数来实现列表去重。

6.1 基本用法

import numpy as np

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用numpy库去重
unique_list = np.unique(original_list).tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

6.2 注意事项

7. 使用collections.OrderedDict去重

collections.OrderedDict是Python标准库collections中的一个类,它是一个有序字典。我们可以利用OrderedDict来实现列表去重,并保持原有顺序。

7.1 基本用法

from collections import OrderedDict

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用OrderedDict去重
unique_list = list(OrderedDict.fromkeys(original_list))

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

7.2 注意事项

8. 使用functools.reduce()方法去重

functools.reduce()是Python标准库functools中的一个函数,它可以对可迭代对象进行累积操作。我们可以利用reduce()函数来实现列表去重。

8.1 基本用法

from functools import reduce

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用functools.reduce()方法去重
def remove_duplicates(acc, x):
    if x not in acc:
        acc.append(x)
    return acc

unique_list = reduce(remove_duplicates, original_list, [])

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

8.2 注意事项

9. 使用more_itertools.unique_everseen()方法去重

more_itertools是Python中一个扩展了itertools功能的第三方库。我们可以利用more_itertools.unique_everseen()函数来实现列表去重,并保持原有顺序。

9.1 基本用法

from more_itertools import unique_everseen

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用more_itertools.unique_everseen()方法去重
unique_list = list(unique_everseen(original_list))

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

9.2 注意事项

10. 使用set与列表推导式结合去重

我们可以将set与列表推导式结合起来,实现列表去重并保持原有顺序。

10.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用set与列表推导式结合去重
seen = set()
unique_list = [x for x in original_list if not (x in seen or seen.add(x))]

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

10.2 注意事项

11. 使用filter()函数去重

filter()是Python中的一个内置函数,它可以对可迭代对象进行过滤。我们可以利用filter()函数来实现列表去重。

11.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用filter()函数去重
seen = set()
unique_list = list(filter(lambda x: not (x in seen or seen.add(x)), original_list))

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

11.2 注意事项

12. 使用map()函数去重

map()是Python中的一个内置函数,它可以对可迭代对象进行映射操作。我们可以利用map()函数来实现列表去重。

12.1 基本用法

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用map()函数去重
seen = set()
unique_list = list(map(lambda x: x if not (x in seen or seen.add(x)) else None, original_list))

# 过滤掉None值
unique_list = [x for x in unique_list if x is not None]

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

12.2 注意事项

13. 使用collections.Counter去重

collections.Counter是Python标准库collections中的一个类,它是一个计数器。我们可以利用Counter来实现列表去重。

13.1 基本用法

from collections import Counter

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用collections.Counter去重
unique_list = list(Counter(original_list).keys())

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

13.2 注意事项

14. 使用pandas.Series.unique()方法去重

pandas.Series.unique()pandas库中的一个方法,它可以返回Series中的唯一值。我们可以利用这一方法来实现列表去重。

14.1 基本用法

import pandas as pd

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用pandas.Series.unique()方法去重
unique_list = pd.Series(original_list).unique().tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

14.2 注意事项

15. 使用numpy.unique()方法去重

numpy.unique()numpy库中的一个函数,它可以返回数组中的唯一值。我们可以利用这一函数来实现列表去重。

15.1 基本用法

import numpy as np

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用numpy.unique()方法去重
unique_list = np.unique(original_list).tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

15.2 注意事项

16. 使用pandas.DataFrame.drop_duplicates()方法去重

pandas.DataFrame.drop_duplicates()pandas库中的一个方法,它可以删除DataFrame中的重复行。我们可以利用这一方法来实现列表去重。

16.1 基本用法

import pandas as pd

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用pandas.DataFrame.drop_duplicates()方法去重
df = pd.DataFrame(original_list, columns=['value'])
unique_list = df['value'].drop_duplicates().tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

16.2 注意事项

17. 使用pandas.Series.drop_duplicates()方法去重

pandas.Series.drop_duplicates()pandas库中的一个方法,它可以删除Series中的重复值。我们可以利用这一方法来实现列表去重。

17.1 基本用法

import pandas as pd

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用pandas.Series.drop_duplicates()方法去重
unique_list = pd.Series(original_list).drop_duplicates().tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

17.2 注意事项

18. 使用pandas.DataFrame.duplicated()方法去重

pandas.DataFrame.duplicated()pandas库中的一个方法,它可以返回一个布尔Series,表示每一行是否是重复行。我们可以利用这一方法来实现列表去重。

18.1 基本用法

import pandas as pd

# 原始列表
original_list = [1, 2, 2, 3, 4, 4, 5]

# 使用pandas.DataFrame.duplicated()方法去重
df = pd.DataFrame(original_list, columns=['value'])
unique_list = df[~df.duplicated()]['value'].tolist()

print(unique_list)

输出结果:

[1, 2, 3, 4, 5]

18.2 注意事项

19. 使用pandas.Series.duplicated()方法去重

pandas.Series.duplicated()pandas库中的一个方法,它可以返回一个布尔Series,表示每一个元素是否是重复值。我们可以利用这一方法来实现列表去重。

19.1 基本用法

”`python import

推荐阅读:
  1. Python 列表简单去重
  2. python对列表中元素去重复的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Python如何实现一个透视表

下一篇:Python如何实现线性规划

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》