python中对list去重的多种方法

直接上代码:

# encoding=utf8

import itertools

def dup_remove(lis, i):
	if i in lis:
		return lis
	else:
		return  lis + [i]

def main():
	l = ['b','c','d','b','c','a','a']

	# 利用set
	print list(set(l))
	# 利用字典
	print {}.fromkeys(l, 1).keys()
	# 列表推导式
	m = []
	[m.append(i) for i in l if i not in m]
	print m
	# 利用reduce:http://www.runoob.com/python/python-func-reduce.html
	func = lambda x, y: x if y in x else x + [y]
	m = reduce(func, [[], ] + l)
	print m
	# 将上面的lambda函数换成普通函数
	m = reduce(dup_remove, [[], ] + l)
	print m
	# 使用itertools.groupby:http://www.cnblogs.com/vamei/p/3174796.html
	m = []
	l.sort()	# 分组之前需要使用sorted()对原循环器的元素,根据key函数进行排序,让同组元素先在位置上靠拢。
	it = itertools.groupby(l)
	for k, v in it:
		m.append(k)
	print m

if __name__ == '__main__':
	main()

运行结果:

['a', 'c', 'b', 'd']
['a', 'c', 'b', 'd']
['b', 'c', 'd', 'a']
['b', 'c', 'd', 'a']
['b', 'c', 'd', 'a']
['a', 'b', 'c', 'd']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值