python – 程序的断言测试,用于检查列表是否是另一个列表中的子列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 程序的断言测试,用于检查列表是否是另一个列表中的子列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1264字,纯文字阅读大概需要2分钟。
内容图文
![python – 程序的断言测试,用于检查列表是否是另一个列表中的子列表](/upload/InfoBanner/zyjiaocheng/750/134821ad399b41cebeaeacdfd5e9ef73.jpg)
我编写了一个小程序,应检查给定列表是否是另一个列表中的子列表,并返回True或False:
def is_sublist_of(sublist, given):
""" Returns whether the sublist is part of the given combination.
The order of the sublist must also correspond to the order of the
corresponding part in the given combination."""
return sublist in [given[i:i+len(sublist)] for i in range(0,len(given)-len(sublist))]
此代码是我必须执行的赋值的一部分,但给定的断言之一是:
simple_list = [1, 2, 3, 4]
for element in simple_list:
assert is_sublist_of([element], simple_list)
assert not is_sublist_of([5], simple_list)
我的程序未通过此测试.这是否意味着我的程序在某些特殊情况下不起作用?感谢您对此进行调查.
解决方法:
是.您不会生成所有子列表:省略最后一个.如果给出给定= [1,2,3,4]和sublist = [1],则得到:
>>> given = [1, 2, 3, 4]
>>> sublist = [1]
>>> [given[i:i+len(sublist)] for i in range(0,len(given)-len(sublist))]
[[1], [2], [3]]
(他们称这通常是“一个错误”).
快速解决方案是:
return sublist in [given[i:i+len(sublist)] for i in range(0,len(given)-len(sublist)+1)]
所以在范围(..)中有1.
但更优雅的解决方案是:
def is_sublist_of(sublist, given):
n = len(sublist)
return any(sublist == given[i:i+n] for i in range(len(given)-n+1))
这里算法将从找到这样的列表的那一刻起停止,因此不生成所有子列表,然后检查它们中的一个是否匹配.
内容总结
以上是互联网集市为您收集整理的python – 程序的断言测试,用于检查列表是否是另一个列表中的子列表全部内容,希望文章能够帮你解决python – 程序的断言测试,用于检查列表是否是另一个列表中的子列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。