如何去除列表中的重复数字?
#-*- coding: utf-8 -*-
'''
列表去重复的N种方法
'''
class Wipe_List(object):
def __init__(self,listdata):
self.data = listdata
#方法一
def Wipe1(self):
self.data.sort()
tmplist=list()
#用于判断最后两个数字是否重复
flasg = 1
for i in range(len(self.data)-1):
y = i+1
if self.data[i] <> self.data[y]:
tmplist.append(self.data[i])
flag = 1
else:
flag = 0
if flag == 1:
tmplist.append(self.data[-1])
return tmplist
#方法二
def Wipe2(self):
#dict.fromkeys(seq,val=None)
#创建并返回一个新字典,以序列seq作为键,val的值为value默认是None
return {}.fromkeys(self.data).keys()
#方法三
def Wipe3(self):
return list(set(self.data))
#方法四
def Wipe4(self):
listdata1 = filter(lambda x:self.data.count(x) > 1,self.data)
for i in listdata1:
self.data.remove(i)
return self.data
#方法五
def Wipe5(self):
count = 0
flag = 0
self.data.sort()
for i in range(len(self.data)-1):
y = i + 1
if self.data[i] <> self.data[y]:
self.data[count] = self.data[i]
count = count+1
flag = 1
else:
flag = 0
#用于判断最后两个数字是否重复
if flag == 1:
self.data[count] = self.data[-1]
return self.data[0:count+1]
test = Wipe_List([1,2,3,4,6,1])
print test.Wipe1()
print test.Wipe2()
print test.Wipe3()
print test.Wipe4()
print test.Wipe5()
其中方法四会把重复的数字都删除。
如何对列表进行过滤?
#-*- coding: utf-8 -*-
'''
列表过滤的3种方法
'''
#方法一:
#迭代循环过滤
#for i in listdata
# 过滤表达式
listdata=[1,2,3,4,5,6,7,8]
for i in listdata:
if i%2 == 1:
print i
#方法二
#列表解析
print [x for x in listdata if x%2 == 1]
#方法三
#lamba表达式返回的是一个函数对象,再通过filter进行过滤
print filter(lambda x:x%2,listdata)
转载于:https://blog.51cto.com/forlinux/1416554