给定整数 a, b 使得 a < b;和一些有序的可迭代整数序列,seq
。确定 a
和 b
是否按顺序出现在 seq
显而易见的第一步是:
假设 a < b(如果 a > b,只需切换值)。
>>> idx = 0
>>> for i in range(0, len(l)):
... if a == l[i]:
... idx = i
...
>>> b == l[idx+1]
这感觉很笨拙。
例如给定
>>> [1, 2, 3, 8]
如果a为1,b为3,则不相邻,如果a为3,b为8,则相邻。
有些东西告诉我有一种更 pythonic 的方式来做这件事,或者这是一个经过充分探索的问题,而我缺少一种更清晰/更清晰的方法来处理它。
最佳答案
使用any reducer 来确定是否有任何相邻对匹配 (a,b):
>>> seq = [1, 2, 3, 8]
>>> a = 3
>>> b = 8
>>> any((seq[i], seq[i+1]) == (a,b) for i in range(len(seq)-1))
True
>>> b = 1
>>> any((seq[i], seq[i+1]) == (a,b) for i in range(len(seq)-1))
False
>>>
关于确定两个给定数字在整数序列中是否相邻的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689603/