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)