我有一个元组如下s=[(1,300),(250,800),(900,1000),(1200,1300),(1500,2100)]
我需要比较列表的上限和下一个列表的下限。如果下一个列表的下限小于上一个列表的上限,它应该抛出错误,否则它应该通过。示例:s=[(1,300),(250,800),(900,1000),(1200,1300),(1500,2100)]
-这应该抛出错误为250〈300。如果它失败的任何一个,它应该立即抛出错误。s=[(1,300),(350,800),(900,1000)]
-当350〉300时不应该抛出错误。
我试过这样的方法:
s=[(1,300),(250,800),(900,1000)]
s= (sorted(s))
print(s)
def f(mytuple, currentelement):
return mytuple[mytuple.index(currentelement) + 1]
for i in s:
j = f(s,i)
if i[0]<j[1]:
print("fail")
else:
print("pass")
2条答案
按热度按时间esyap4oy1#
zip()
将列表(或任何可迭代对象)组合成一个新的可迭代对象。当最短列表耗尽时,它会停止。想象一下:我们可以使用它以优雅、易读的形式获取
s
中的所有 * 对 *:现在我们有了
((a0, a1), (b0, b1))
形式的对,你可以很容易地比较a1 > b0
是否在一个循环中:jmo0nnb32#
我看到两个问题:
1)您遇到了一个越界错误,因为最后一个元素(900,1000)试图检查不存在的follow元素。
你可以通过在循环中添加[:-1]来跳过最后一个元素。
2)另外,你的“if”条件似乎是反向的,你似乎想比较i[1]和j[0],而不是i[0]和j[1]。
有关详细信息,请参见How to loop through all but the last item of a list?。