使两个序列非双射的子列表

2024-06-28 19:05:59 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题已经在这里讨论过了,我附加了来自post的代码

def is_bijection(seq1, seq2):
  distinct1 = set(seq1)
  distinct2 = set(seq2)
  distinctMappings = set(zip(seq1, seq2))
  return len(distinct1) == len(distinctMappings) and len(distinct2) == len(distinctMappings)

上面的代码片段检查两个sequence是否是双射的。我想扩大范围。我想拉出一个子列表,其中包含导致它不是双射的对。下面是一个例子:

seq1 = ['India','Bangladesh','Nordic','Bangladesh']
seq2 = [12,10,10,11]

如果我们将上述序列发送到附加函数,它将返回false。我还想得到如下列表/主题:

'Bangladesh' - 10
'Bangladesh' - 11

这就说明了不使用双射词的原因。有什么线索吗

编辑:

如果序列(X,Y)遵循以下规则,则它们是双射的:

  1. X的每个元素必须与Y的至少一个元素配对
  2. X的元素不能与Y的多个元素配对
  3. Y的每个元素必须与X的至少一个元素配对,并且
  4. Y的元素不能与X的多个元素配对

任何两个不遵循上述规则的序列都是非双射的。我想从这两个序列中得到(X,Y)对的子列表,使它成为非双射的


Tags: 代码元素列表len规则序列post双射