我有一个简单的列表:
a = [1,1,1,0,0,1,0,1,1,0,1,1,1]
我正试图找到一种方法来确定三个相互出现的时间。因此,根据上面的列表,输出会说有两个这样的实例。我读过的其他帖子似乎都使用了itertools.groupby(),但是我不熟悉它,所以我想知道是否还有其他方法?
答案 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