Pythonの面接問題(1)

2048 ワード

リストの重複数を除去するにはどうすればいいですか?
#-*- 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)