listpython重复
1. python实现给定一个列表判断里面是否有重复
有两个方法:
使用列表的count方法,因为count方法可以做对象内的元素进行出现次数叠加计算
list1=[1,2,3,4,4,5,6,7]list1.count(1)#结果为1list1.count(4)#结果为2foriinlist1:iflist1.count(i)>=2:print('该元素%s重复'%i)#结果:该元素4重复该元素4重复#因为迭代了两次4所以有两次输出,功能是实现了,但是却打印了两次,有点不理想- list1=[1,2,3,4,4,5,6,7]list2=list1.()#为了不破坏原数据,临时浅复制给变量list2list3=list(set(list2))#使用set()函数将list2转为集合去掉重复元素又用list()转回列表foriinlist3:#对无重复元素的列表list3迭代ifiinlist2:list1.remove(i)#当list3内的元素存在于list2中,则把其元素从list2中删除,最后就会留下重复元素print('list1:%s中的重复元素有:%s'%(list1,list2))#组后输出原数据list1和最终结果list2#结果:list1:[1,2,3,4,4,5,6,7]中的重复元素有:[4]#效果实现了,也没问题,就是变量使用有点多。看你选择了
2.借用工厂函数set()把对象转为集合和列表的方法(浅复制),集合会默认把重复元素去掉
2. python找出列表元素重复个数和重复值
输出列表元素重复个数
def get_element(data):
dic = {}
i = 0
while i < len(data):
if data[i] in dic:
""渗搜"
循迅散环查找列表元素,如果一个元素出现一次,value就等于1,多次出现,value就增加
"亩喊氏""
dic[data[i]] += 1
else:
dic[data[i]] = 1
i += 1
for j, k in dic.items():
if k > 1:
print('data数组中重复的元素有%d,它的个数是%d个'%(j,k))
print(dic)
my_list =[1,2,3,4,2,4,2,3,4,5,6,23,23,32]
get_element(my_list)
3. python如何实现删除某list中所有重复出现的元素
1. 使用内置函数set
lists = [1,1,2,3,4,6,6,2,2,9]
lists = list(set(lists))
先将列表转换为集合,因为集合是不重复的,故直接删除重复元素,而且输出结果为排序后的
4. python如何删除list里重复的元素
这个可简单可复杂。
简单的:利用集合
a=list(set(a))#这样就可以了,是不是很简单
复杂的:
就是先对列表排序,然后比较相邻元素是否相同,相同的则删除后面的。大体算法思路,代码自己写吧
当然还有其他的算法...
-----------------------------------------------------------------------------------
额, 不好意思,看错了
defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa
这个就可以了,利用 list.count(obj) 计算obj在list中出现的次数进行判断
5. python如何删除list里重复的元素
一共使用四种方法来去除列表中的重复元素,下面是具体实现:
def f1(seq):
# not order preserving
set = {}
map(set.__setitem__, seq, [])
return set.keys()
def f2(seq):
# order preserving
checked = []
for e in seq:
if e not in checked:
checked.append(e)
return checked
def f3(seq):
# Not order preserving
keys = {}
for e in seq:
keys[e] = 1
return keys.keys()
def f4(seq):
# order preserving
noDupes = []
[noDupes.append(i) for i in seq if not noDupes.count(i)]
return noDupes
def f5(seq, idfun=None):
# order preserving
if idfun is None:
def idfun(x): return x
seen = {}
result = []
for item in seq:
marker = idfun(item)
# in old Python versions:
# if seen.has_key(marker)
# but in new ones:
if marker in seen: continue
seen[marker] = 1
result.append(item)
return result
def f6(seq):
# Not order preserving
set = Set(seq)
return list(set)
6. python中list中怎么删除重复数据保留一条
可以先统计list中每个数据的个数,用一个dict存储,然后遍历list,判断是否是最后一个,是的就从list中删除即可
7. python 如何找出两个list中的相同元素
这个问题有多种解法,最常见的是brute-force 也叫暴力枚举法,也就是把两个list当中的每个元素都取出来进行两两比较,直到找到相同元素。设第一个数组的长度为n,第二个数胡兆组的长度为m,则时间复杂度为O(n*m),空间复杂度为O(1)
但是个问题陵穗常见的解决方法是哈希表。在Python当中有Dictionary这种数据类型,其实是一个哈希表。运用这种数据类型,可以迅速检索到想要的元素。但这种方法需要存储一组元素,所以时间复杂度为O(n),空间复杂度为O(m)。
以下是程序:
def find_same_element(l1, l2):
dist = {}
for i in l1:
dist[i] = 1
for i in l2:
if dist.get(i) > None:
return i
return None
以下是检验
l1 = [1, 2, '34', 34, 5]
l2 = [4, 7, 8]
print find_same_element(l1, l2)
应当输出None
l1 = [1, 2, '34', 34, 5]
l2 = [4, 7, 8,5]
print find_same_element(l1, l2)
应当输出5
这个函数只能找尺做卜到一个共同元素,如果两个list有多个相同元素则只能输出中间的一个。
这个问题常见于面试题,属于最简单的面试题目。需要给面试官说明的是,
第一,哈希表可以快速检索元素,
第二,python有独特的数据类型,
第三,多个共同元素的情况需要面试官告知如何处理,
第四,注意没有共同元素的时候的输出(程序中为None但面试官希望你能提出这个问题)