Python 检查序列的列表

Python 检查序列的列表,python,list,Python,List,我想检查列表是否有特定的元素序列。我已经对包含7个元素的列表进行了排序,现在我想检查前4个元素是否彼此相同,最后3个元素是否彼此相同 对于我想要实现的目标,列表如下: list = ['1','1','1','1','2','2','2'] 我希望这能使我想要实现的目标更加清晰。基于问题的额外细节,这可以解决问题: def check_group_equal(inputList): ref = inputList[0] for e in inputList[1:]:

我想检查列表是否有特定的元素序列。我已经对包含7个元素的列表进行了排序,现在我想检查前4个元素是否彼此相同,最后3个元素是否彼此相同

对于我想要实现的目标,列表如下:

list = ['1','1','1','1','2','2','2'] 

我希望这能使我想要实现的目标更加清晰。

基于问题的额外细节,这可以解决问题:

def check_group_equal(inputList):
    ref = inputList[0]
    for e in inputList[1:]:
        if e != ref:
            return False
    return True

list = some_random_list(length=7)

# Check first group
check_group_equal(list[0:3])

# Check second group
check_group_equal(list[4:7])

这应该是可行的,只需将每个子列表传递到函数:

def all_same(items):
    return all(x == items[0] for x in items)

以上内容来自以下帖子:

您可以对列表进行切片。以前四个要素为例:

>>> L = ['1','1','1','1','2','2','2'] 
>>> L[:4]
['1', '1', '1', '1']
最后三点:

>>> L[-3:]
['2', '2', '2']
A不允许重复。因此:

 >>> set(L[:4])
 {1}
这意味着,如果此集合的长度为1,则切片列表中的所有元素都相同

综上所述:

>>> len(set(L[:4])) == 1 and len(set(L[-3:])) == 1
True

显示您的条件已满足。

如果您可以将列表转换为字符串,
re
将执行以下操作:

re.match(r'^(.)\1{3}(.)\2{2}$', ''.join(['1','1','1','1','2','2','2']))

如果要检查列表是否包含一个元素的3项和另一个元素的4项,可以使用
集合忽略排序。计数器

content = Counter(['1', '2', '2', '1', '1', '2', '1']).most_common()
print(content) # => [('1', 4), ('2', 3)]

if len(content) == 2 and content[0][1] == 4 and content[1][1] == 3 or
   len(content) == 1 and content[0][1] == 7:
    pass # Your list have desired structure

如果len(set(lst[:3])==1和len(set(lst[3:])==1:
最后一个值的可能重复的可能重复帮助很大,所以非常感谢!然而,我不认为表达会达到我想要的。我编辑这篇文章是为了更好地解释我想检查的内容。这永远不会是真的,3长列表总是不同于2长列表亲爱的投票人,请注意,我的第一个答案的版本指向了第一个问题的版本。在编辑中看到额外的信息后,我相应地修改了我的答案。请重新考虑你所做的事情,确切地说是@Hugh Bothwell在问题中的评论。