检查列表是否包含特定的数字序列

时间:2015-03-02 02:56:40

标签: python

我有一个从1到6的5个整数的列表(模拟5个骰子滚动),例如随机生成:

L = [1,2,3,4,5]

我想检查一下排序后的这个列表是否包含

[1,2,3,4] or [2,3,4,5] or [3,4,5,6].

我如何检查列表L是否包含3种组合中的任何一种? 我不想要检查是否

L[i] == l1 [i],  L[i]== l2 [i],  L[i]== l3 [i]

表示列表中的int。我觉得这只是一个简单的问题,询问列表是否包含其他列表或其他内容。我只是无法连接点而不是点击我。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

in运算符可以方便地查看序列是否包含单个项目,但它无法检查项目列表。但是,它确实对字符串有效,所以只需将所有内容转换为字符串。

s = ''.join(str(i) for i in sorted(L))
if '1234' in s or '2345' in s or '3456' in s:
    # ...

如果您还有更多条件需要检查,可以简化一下:

if any(sublist in s for sublist in ('1234', '2345', '3456')):

答案 1 :(得分:3)

您需要与L的第一个和最后四个元素进行比较:

 L = [1,2,3,4,5]
 lst = [2,3,4,5]
 print(sorted(lst) in (L[1:], L[:4]) )

类似于:

any(sorted(lst) in (L[1:],L[:4]) for lst in rolls)