Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中找到元素重复的元组?_Python_List_Tuples - Fatal编程技术网

如何在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,唯一边)