想象一下下面的列表:
test_list = [0,1,2,3,4,5,20,21,22]
列表增加1到5,然后跳到20。 我想写一段代码,返回列表为特定序列跳转的数字。在上面的例子中,答案是5
下面的代码符合我的要求;然而,我正在寻找一个更清洁的解决方案
result = 0
for n, i in enumerate(test_list):
if n+1 < len(test_list):
if test_list[n]+1 == test_list[n+1]:
result = test_list[n+1]
print(result)
另一个例子可能是:
test_list2 = [1,3,5,7,9,20,21,22]
result = 0
for n, i in enumerate(test_list2):
if n+1 < len(test_list2):
if test_list2[n]+2 == test_list2[n+1]:
result = test_list2[n+1]
print(result)
这里已经有了很好的答案,但是您可以用一种不必硬编码模式的方式来编写代码
将操作类型和增量作为参数,可以执行以下操作:
实际上,我突然想到,只有在跳转后模式发生变化时,代码才会返回正确的值。如果您希望能够检测到跳转,即使之后模式保持不变,您必须打破循环:
您可以使用^{} 和一个分组函数来对连续块进行分组,按照以下方式来做某事:
这当然不适用于第二种情况,即第一个块增加2。你必须检测到这一点
可以使用numpy查找索引,然后访问列表
相关问题 更多 >
编程相关推荐