首页 > 解决方案 > 识别列表中的空间数字

问题描述

我想编写一个函数来获取整数列表并返回 True 如果它包含 007 。例如,查看一些结果。

spy_game([1,2,4,0,0,7,5]) --> True spy_game([1,0,2,4,0,5,7]) --> True spy_game([1,7,2,0,4,5,0]) --> False

我有一个代码,它可以工作(见下文),但我想要另一个解决方案!

def spy_game(nums):

    code = [0,0,7,'x']

    for num in nums:
        if num == code[0]:
            code.pop(0)   # code.remove(num) also works

    return len(code) == 1

标签: python-3.x

解决方案


这听起来像是一个家庭作业问题,所以我不会给出一个彻底的解决方案,而是提供一种考虑问题的方法。

Python 中的字符串和列表都是可迭代类型,因此您可以为此应用存在于字符串(即.find())的解决方案并将其应用于列表。

对字符串有用的函数也是.join()方法,它从列表中创建字符串。

因此,查看列表是否l = ['a', 'b', 'c', 'd', 'e', 'f']包含序列的一种方法s = ['d', 'e', 'f']是将两者都转换为字符串并检查 if ''.join(s) in ''.join(l)。对于您的示例,由于列表的元素不是字符串,因此您必须将它们转换为使用.join().

我怀疑包装中还隐藏了一个解决方案itertools,但在这里可能会有点矫枉过正。


推荐阅读