如何在python中找到元素重复的元组?
我有一份格式的清单如何在python中找到元素重复的元组?,python,list,tuples,Python,List,Tuples,我有一份格式的清单 unique_edges=[('SLT2','SDP1'),('GCD7','ATG34'),('MTH1','MTH1'),('ADY2','ADY2')] 我需要使用列表理解(一行代码)将具有相同元素的元组移动两次(如('MTH1','MTH1'))到新列表 我想我需要使用类似的东西 homo_二聚体=列表(映射(元组,唯一边)) 但我不知道如何使用这些函数来搜索一个元组中的重复元素。列表理解以查找具有相同元素的元组: homo_dimers = [(a, b) for
unique_edges=[('SLT2','SDP1'),('GCD7','ATG34'),('MTH1','MTH1'),('ADY2','ADY2')]
我需要使用列表理解(一行代码)将具有相同元素的元组移动两次(如('MTH1','MTH1'))到新列表
我想我需要使用类似的东西
homo_二聚体=列表(映射(元组,唯一边))
但我不知道如何使用这些函数来搜索一个元组中的重复元素。列表理解以查找具有相同元素的元组:
homo_dimers = [(a, b) for a, b in unique_edges if a == b]
print(homo_dimers)
印刷品:
[('MTH1', 'MTH1'), ('ADY2', 'ADY2')]
或者,如果元组包含2个以上的元素:
homo_dimers = [t for t in unique_edges if len(set(t)) == 1]
您可以在列表理解中使用if语句:
unique_edges = [('SLT2', 'SDP1'), ('GCD7', 'ATG34'), ('MTH1', 'MTH1'),
('ADY2', 'ADY2')]
print([i for i in unique_edges if i[0] == i[1]])
homo_二聚体=[i为唯一边中的i,如果i[0]==i[1]]
输出
[('MTH1','MTH1'),('ADY2','ADY2')]def move_from_list(item,old,new):#因为我们不能在列表理解行中调用多个函数,所以我们创建一个函数来移动一个元组
旧。删除(项目)
新增。追加(项目)
唯一_边=[('SLT2','SDP1'),('GCD7','ATG34'),('MTH1','MTH1'),('ADY2','ADY2')]#输入列表
homo_二聚体=[]#用所有非唯一元组填充的空列表
[如果a==b,则从唯一边中的a,b的列表((a,b),唯一边,同源二聚体)中移动a,b]#列表理解行
打印(同源二聚体)#[('MTH1','MTH1'),('ADY2','ADY2')]
打印(唯一#u边)#[('SLT2','SDP1'),('GCD7','ATG34'),('ADY2','ADY2')]
我可能误解了这个问题。此代码表示您希望从“唯一边”列表中删除非唯一元组,并将其添加到同源二聚体中为什么需要列表理解?如果你使用一个普通的
循环会发生什么?你不需要使用映射(元组,…)
,它会创建新的元组,但是你已经有了元组。如果len(set(t))=1,那么t在唯一边中表示t
或者过滤器(lambda t:len(set(t))=1,唯一边)