[英]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.