Python检查数组中的下一个是否相同

Python检查数组中的下一个是否相同,python,Python,我正在制作一个python脚本来掷骰子。除了一点以外,我什么都做得很好。当某人连续掷4、4次骰子时,它应该再掷4个骰子。 我主要想检查数组中的下四个数字是否与前四个相同,以检查是否有“组合” 例如: [4,4,4,4]等于真,数组中再添加4个随机整数 [4,3,1,4]等于假 有人知道我这样做吗 提前谢谢 我怀疑您缺少的部分是应用于理解的all函数。差不多 if all([rolls[i+n] == rolls[i] for n in range(4)]): # Perform 4 mo

我正在制作一个python脚本来掷骰子。除了一点以外,我什么都做得很好。当某人连续掷4、4次骰子时,它应该再掷4个骰子。
我主要想检查数组中的下四个数字是否与前四个相同,以检查是否有“组合”

例如:

[4,4,4,4]等于真,数组中再添加4个随机整数

[4,3,1,4]等于假

有人知道我这样做吗


提前谢谢

我怀疑您缺少的部分是应用于理解的all函数。差不多

if all([rolls[i+n] == rolls[i] for n in range(4)]):
    # Perform 4 more rolls

理解(对于列表表达式中的循环)生成四个布尔结果all决定是否所有元素都为真。仅供参考,all的“或”版本是any功能。

您可以提取最后4卷,将其转换为一组,然后查看其中是否只有一个元素

您还需要确保至少有4个转鼓,以不对
[4,4]
返回
True
,例如:

def test_last_four(rolls):
    if len(rolls) >= 4 and len(set(rolls[-4:])) == 1:
        return rolls[-1]

print(test_last_four([1, 4, 4, 4, 4]))
#=> 4
print(test_last_four([1, 4, 3, 1, 4]))
#=> None
print(test_last_four([4, 4]))
#=> None
你看起来像这样吗?(上图) 您还可以再添加4个这样的随机数字。(bottem)

返回

False
True

使用
set
应该可以:

list1=[4,4,4,4]
list2=[4,4,3,4]
comparison= set(list1).intersection(list2)
if len(comparison) > 1:
    print("No Combo found")
    #or a whatever you require to be done here to show no combo

我从你的问题中得出的结论是,你想核实一下

  • 我的列表中的所有元素都相同吗
  • 如果是,列表中有哪个值
例如,我认为最具python风格的解决方案是将列表作为一个集合进行转换

if set(dice_rolls) == {4}:
    # roll logic

请显示您遇到困难的代码部分。提供一个示例输入和明确的精确输出,并解释您在当前代码中面临的困难。为什么不只存储最后4卷?是的,对不起,我对在这里提问非常陌生,将来也可以。
False
True
list1=[4,4,4,4]
list2=[4,4,3,4]
comparison= set(list1).intersection(list2)
if len(comparison) > 1:
    print("No Combo found")
    #or a whatever you require to be done here to show no combo
if set(dice_rolls) == {4}:
    # roll logic