gpt4 book ai didi

python - 找到两个列表之间的共同元素?

转载 作者:行者123 更新时间:2023-12-04 08:41:19 35 4
gpt4 key购买 nike

我有两个格式如下的列表:

sortedAlt=[['TIF35', 'TIF35'], ['PTP1', 'SSM4'], ['AMD1', 'PRP40'], ['END3', 'RAD26']]
sortedB=[['SDP1', 'SLT2'], ['ATG34', 'GCD7'], ['END3', 'RAD26'], ['TIF35', 'TIF35']]
我需要找到两个列表之间的共享元素。我尝试了几件事:
这两个只返回 []:
sharedEdges = []
temp = [sharedEdges.add((a, b)) for (a, b) in sortedB
if (a, b) in sortedAlt]

for (a,b) in sortedAlt:
print((a,b))
if (a,b) in sortedB:
sharedEdges.add((a,b))
print(sharedEdges)
对于上面的代码,我很确定问题出在 if 语句中;如果我对两者使用相同的列表输入,我仍然会得到一个空输出。
如果我尝试使用相交函数,我会收到错误:TypeError: unhashable type: 'list'
sharedEdges = set(sortedAlt) & set(sortedB)
sharedEdges = list(set(sortedAlt)-set(sortedAlt))
print(sharedEdges)

最佳答案

考虑到内部数组元素可以是非排序方式,根据字符顺序对它们进行排序然后比较

A=[['TIF35', 'TIF35'], ['PTP1', 'SSM4'], ['AMD1', 'PRP40'], ['END3', 'RAD26']]
B=[['SDP1', 'SLT2'], ['ATG34', 'GCD7'], ['END3', 'RAD26'], ['TIF35', 'TIF35']]

tmp_b = [sorted(inner_list) for inner_list in B]
res = []
for inner_list in A:
if sorted(inner_list) in tmp_b:
res.append(inner_list)

print(res)
#OUTPUT [['TIF35', 'TIF35'], ['END3', 'RAD26']]
考虑到元素的内部列表顺序无关紧要,然后按照@patrickartner 的建议使用 set 操作,这将使时间复杂度变小
res = list(set(tuple(i) for i in A).intersection(set(tuple(i) for i in B)))

关于python - 找到两个列表之间的共同元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552954/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com