繁体   English   中英

在 Python 中查找缺失的列表

[英]Finding the missing list in Python

I有一个按j递增顺序排列的列表。 我想找到缺失的j值。 (澄清一下,对于[[8, 1]]i=8,j=1 )。 附加了所需的输出。

I=[[[8, 1]],
 [[1, 2]],
 [[0, 3]],
 [[15, 7]],
 [[7, 8]],
 [[2, 9], [8, 9]],
 [[9, 10]]]

所需的输出是:

Missing=[4,5,6]

我怎样才能产生所需的输出?

生成一组确实出现在列表中的数字,然后通过确定它们是否出现在集合中来识别缺失的数字:

minimum = I[0][0][1]
maximum = I[-1][0][1]
included_numbers = {entry for sublist in I for _, entry in sublist}
[i for i in range(minimum, maximum) if i not in included_numbers]

这输出:

[4, 5, 6]

最简单的方法是使用集合。 一组带有预期的j值,一组带有实际值。 然后你可以减去集合并打印缺失的集合。

items = [[[8, 1]],
         [[1, 2]],
         [[0, 3]],
         [[15, 7]],
         [[7, 8]],
         [[2, 9], [8, 9]],
         [[9, 10]]]

expected = set(range(1, 11))
actual = set([item[0][1] for item in items])
print(expected - actual)

如果您需要将输出作为列表,只需转换为如下列表:

missing = list(expected - actual)

假设值从1开始,下面的代码可以解决问题"

def find_missing(I):
  current_max = 1
  missing = []
  for row in I:
    for i,j in row:
      if j > current_max:
        missing.extend(list(range(current_max,j)))
      current_max = j+1
  return missing

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM