2024-04-26 00:28:55 发布
网友
我遇到了一个问题,即在一个范围内查找缺失的值,而且该范围对于连续的行也是可变的。在
673 673 673 676 676 680 2667 2667 2668 2670 2671 2674
这只是一部分,行值也可以更多 如果你需要澄清,请告诉我。在
在Python中:
def report_missing_numbers(f): for line in f: numbers = [int(n) for n in line.split()] all_numbers = set(range(numbers[0], numbers[-1])) missing = all_numbers - set(numbers) yield missing
注意:all_numbers是一个谎言,因为范围不包括最后一个数,但是由于这个数字被保证在集合中,它不会影响算法的正确性。在
all_numbers
注意:我从原来的答案中删除了[-1],因为int(n)不关心后面的{}。在
[-1]
int(n)
Perl语言:
use Modern::Perl; for my $line (<DATA>) { chomp $line; my @numbers = split /\s+/, $line; my ($min, $max) = (sort { $a <=> $b } @numbers)[0, -1]; my @missing = grep { not $_ ~~ @numbers } $min .. $max; say join " ", @missing; } __DATA__ 673 673 673 676 676 680 2667 2667 2668 2670 2671 2674
纯粹的狂欢。在
使用两个子shell并运行diff,然后清理结果。在
diff
diff <(cat my_range_with_holes) <(seq 1 1000) | grep '>' | cut -c 3-
在Python中:
注意:
all_numbers
是一个谎言,因为范围不包括最后一个数,但是由于这个数字被保证在集合中,它不会影响算法的正确性。在注意:我从原来的答案中删除了}。在
[-1]
,因为int(n)
不关心后面的{Perl语言:
纯粹的狂欢。在
使用两个子shell并运行
diff
,然后清理结果。在相关问题 更多 >
编程相关推荐