检查一个列表是否在另一个列表中的有效方法是什么?像这样的东西:
[2,3] in [1,2,3,4] #evaluates True
[1,5,4] in [5,1,5,4] #evaluates True
[1,2] in [4,3,2,1] #evaluates False
列表中的顺序很重要。
最佳答案
def check_ordered_sublist_in_list(sub_list, main_list):
sub_list = np.array(sub_list)
main_list = np.array(main_list)
return any(all(main_list[n:(n + len(sub_list))] == sub_list)
for n in range(0, len(main_list) - len(sub_list) + 1))
>>> check_ordered_sublist_in_list([2, 3], [1, 2, 3, 4])
True
>>> check_ordered_sublist_in_list([1, 5, 4], [5, 1, 5, 4])
True
>>> check_ordered_sublist_in_list([1, 2], [4, 3, 2, 1])
False
这会将列表转换为 numpy 数组(以提高计算效率),然后使用切片来检查 sub_list
是否包含在切片内。任何成功都会返回 True。
关于python - 如果列表位于其他列表内的 bool 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885658/