检查一个数组的所有元素是否在另一个数组中

新手上路,请多包涵

我有这两个数组:

 A = [1,2,3,4,5,6,7,8,9,0]

和:

 B = [4,5,6,7]

有没有办法检查 B 是否是 A 中具有相同项目顺序的子列表?

原文由 iam_agf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 416
2 个回答

这个怎么样:

 A = [1,2,3,4,5,6,7,8,9,0]

B = [4,5,6,7]
C = [7,8,9,0]
D = [4,6,7,5]

def is_slice_in_list(s,l):
    len_s = len(s) #so we don't recompute length of s on every iteration
    return any(s == l[i:len_s+i] for i in xrange(len(l) - len_s+1))

结果:

 >>> is_slice_in_list(B,A)
True
>>> is_slice_in_list(C,A)
True
>>> is_slice_in_list(D,A)
False

原文由 Akavall 发布,翻译遵循 CC BY-SA 3.0 许可协议

issubset 应该可以帮助你

set(B).issubset(set(A))

例如:

 >>> A= [1,2,3,4]
>>> B= [2,3]
>>> set(B).issubset(set(A))
True

编辑: 错误,这个解决方案并不意味着元素的顺序!

原文由 LPH 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题