我正在学习 Python,并正在完成课程中的一些实践实验室。
提示是 如果整数列表中存在序列“007”,则返回 True。
应返回 True 的 nums 列表示例:[1,2,3,4,0,0,7,3,1,6]
我选择将列表解析为一串连续整数,如下所示:
def find_sequence(nums)
str_nums = str(nums).strip('[]').replace(',','').replace(' ','')
if '007' in str_nums:
return True
else:
return False
解决方案更喜欢与您自己的包含整数序列的列表进行比较,并使用 pop() 如下:
def find_sequence(nums)
code = [0,0,7,'x']
for num in nums:
if num == code[0]:
code.pop(0)
return len(code) == 1
其中一种方式比另一种“更好”还是“更差”?哪种方式或多或少实用(您会在专业环境中看到一种方式与另一种方式的比较)吗?
这只是初级课程内容,所以也许这些都是菜鸟解决方案,更实际的东西是课程中稍后的概念。
您误解了任务的要求。需求是检测目标列表中是否存在0,0,7的序列,但不一定是直接序列,但如果是分布式的,这样列表
[1,2,0,3,0,4,7,3,1,6]
预计也会产生积极的影响。
首选解决方案会进行此类搜索,而您的方法则不会。您的方法对于提供正确结果毫无用处的另一个原因是整数列表可以包含任何整数,并且其中一个整数可以是例如
1007
。在这种情况下,基于字符串的方法将产生误报。
顺便说一句:教程不提供 100% 明确的任务描述的情况并不少见,学习者在完成理解英语之前很久就开始学习编程语言的情况也并不罕见。