Python实现:检查列表中某元素是否始终紧随另一元素
嘿,这个需求其实很好实现,我给你分享几个Python里简洁的写法,都是很容易理解的思路:
方法一:遍历索引逐个检查
最直接的方式就是遍历列表的每个元素,当遇到'a'的时候,立刻检查它的下一个元素是不是'b'。同时要注意避免索引越界——毕竟最后一个元素如果是'a'的话,根本没有下一个元素,肯定不符合要求。
def check_a_followed_by_b(lst): # 遍历到倒数第二个元素为止,防止索引越界 for i in range(len(lst) - 1): if lst[i] == 'a': # 只要有一个'a'后面不是'b',直接返回False if lst[i+1] != 'b': return False # 所有'a'都符合要求,返回True return True # 测试你的示例列表 test_list = ['x','y','z','a','b','2','3','5','2','1','5','fds','f','s','a','b'] print(check_a_followed_by_b(test_list)) # 输出:True
方法二:用zip配对相邻元素(更简洁)
利用Python的zip函数,把原列表和它的切片lst[1:]配对,这样每一组都是相邻的两个元素。然后用all()函数来确保所有'a'后面都跟着'b'。
def check_a_followed_by_b(lst): # 配对相邻元素,检查所有'a'的下一个元素都是'b' return all(second == 'b' if first == 'a' else True for first, second in zip(lst, lst[1:])) # 测试示例 test_list = ['x','y','z','a','b','2','3','5','2','1','5','fds','f','s','a','b'] print(check_a_followed_by_b(test_list)) # 输出:True
一些边界情况的说明
- 如果列表里没有'a':函数会返回
True,因为没有违反规则的情况 - 如果最后一个元素是'a':比如
['a']或者['x','a'],函数会返回False(毕竟'a'后面没有元素,不满足要求) - 如果存在某个'a'后面不是'b':比如
['a','c'],函数会立刻返回False
这些方法都很直观,应该就是你想要的简单实现啦~
内容的提问来源于stack exchange,提问作者AyeTown
相关产品推荐
相关产品推荐

