通知设置 新通知
PHP GD编译报错 error: png.h: No such file or directory
回复chris 发起了问题 1 人关注 0 个回复 2689 次浏览 2020-11-20 10:51
每日一题-HTTP1.1比之前版本主要更新了什么?
空心菜 回复了问题 2 人关注 1 个回复 2056 次浏览 2020-11-20 10:22
每日一题-TCP连接在整个生存期内有哪些状态
空心菜 回复了问题 2 人关注 1 个回复 1747 次浏览 2020-11-17 11:16
每日一题-Redis 为什么那么快?
空心菜 回复了问题 3 人关注 2 个回复 2323 次浏览 2020-11-05 10:34
Pyhton列表去重方法总结
Ansible 发表了文章 0 个评论 1548 次浏览 2020-11-02 00:22
Python列表去重在Python应用编程中,是一种非常常见的应用技巧,有些场景下需要统计出来的列表中去重,避免重复统计。
1. 通过字典去重
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
jobs = {}.fromkeys(job).keys()
print(list(jobs))
结果:
['Sale', 'Dev', 'OPS', 'Presale', 'Test']
解释:
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
语法:
dict.fromkeys(seq[, value])
- seq - 字典键值列表。
- value - 可选参数, 设置键序列(seq)的值。
该方法返回一个新字典, .keys
函数以列表返回一个字典所有的键。
2. 通过集合去重
大家都知道在Python数据结构中集合是天生去重的,所以我们可以利用这一特性来达到列表去重的效果。
格式: list(set(mylist))
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
jobs = list(set(job))
由于采用集合,会导致原有的列表排序发生变化,此时可通过如下方法,保持列表原有顺序:
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
jobs = list(set(job))
jobs.sort(key=job.index)
3. 使用itertools模块
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
import itertools
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
job.sort()
job_group = itertools.groupby(job)
jobs = []
for k, g in job_group:
jobs.append(k)
print(jobs)
groupby
根据key(v)值分组的迭代器, 将key函数作用于原循环器的各个元素。根据key函数结果,将拥有相同函数结果的元素分到一个新的循环器。每个新的循环器以函数返回结果为标签。
4. 通过列表推导式去重
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
jobs = []
[ jobs.append(i) for i in job if i not in jobs]
通过列表推导式,判断在不在新列表中的元素则添加到新列表中。
5. 利用lambda匿名函数和 reduce 函数处理
#!/usr/bin/env python3
# _*_coding:utf-8_*_
# Description: List to heavy
from functools import reduce
job = ['Sale', 'Dev', 'OPS', 'Sale', 'Presale', 'Sale', 'Dev', 'Test', 'OPS']
func = lambda x,y:x if y in x else x + [y]
jobs = reduce(func, [[], ] + job)
Python parallel.futures如何检测失败的任务?
chris 回复了问题 2 人关注 1 个回复 1876 次浏览 2020-10-17 15:00
PHP5.4.45编译安装报错
空心菜 回复了问题 2 人关注 1 个回复 2468 次浏览 2020-10-16 16:56
Python如何替换掉字符串里面的单引号和双引号
空心菜 回复了问题 2 人关注 1 个回复 6864 次浏览 2020-09-24 19:02