如何在列表中标识三个相同数字的组

时间:2016-07-13 15:37:27

标签: python list

我有一个简单的列表:

a = [1,1,1,0,0,1,0,1,1,0,1,1,1]

我正试图找到一种方法来确定三个相互出现的时间。因此,根据上面的列表,输出会说有两个这样的实例。我读过的其他帖子似乎都使用了itertools.groupby(),但是我不熟悉它,所以我想知道是否还有其他方法?

2 个答案:

答案 0 :(得分:0)

以下是一种使用itertools.groupby的方法:

from itertools import groupby

a = [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1]    
adjacencies = [(item,  len(list(group))) for item,  group in groupby(a)]
ones = sum(item == 1 and length >= 3 for item,  length in adjacencies)
print ones

这是另一种方式,而不是使用groupby

a = [1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1]
triplets = zip(a[0:], a[1:], a[2:])
ones = sum(set(t) == {1} for t in triplets)
print ones

答案 1 :(得分:0)

这是一个使用#include<Servo.h> Servo myServo; const int resistPin = A0; const int servPin = 9; int intenState = analogRead(resistPin); int xa=0; void setup() { Serial.begin(9600); pinMode(servPin, OUTPUT); pinMode(resistPin, INPUT); myServo.attach(9); } void loop() { for (int i=0;i<5;i++) { xa+=analogRead(A0); delay(1000); } xa=xa/3; //averaging the 3 collected values at 1 seconde delay each. //now its time to compare. if(xa > 500) { myServo.write(120); } else if(xa <= 500) { myServo.write(94); } }

的人
itertools.groupby