python - 具有开始和结束条件的序列的长度(计数)Python

标签 python python-3.x conditional-statements

我有一些加速度数据,我试图计算给定一组条件的序列长度。在这种情况下,我想计算加速度 moves > 2.78 时序列的长度然后回落至 0 以下.
一个例子是

[-1.1, -1, 0, 1.2, 1.8, 2, 2.88, 2.86, 2.53, 1.98, 1.21, 0.89, 0.11, -0.21]
这里的返回结果将是 7 (2.88, 2.86, 2.53, 1.98, 1.21, 0.89, 0.11)
我以前这样做是为了使用以下代码确定严格> 2.78 的序列长度。我需要以此为基础来提供使用 0 作为端点的长度。
def get_Accel_lengths( array ) :
    s = ''.join( ['0' if i < 2.78 else '1' for i in resultsQ4['AccelInt']] )
    parts = s.split('0')
    return [len(p) for p in parts if len(p) > 0]
Q4Accel = get_Accel_lengths(resultsQ4['AccelInt'])
Q4Accel = pd.DataFrame(Q4Accel)
Q4Accel 
使用上面的示例,此代码的结果将是 2 ( 2.88 , 2.86 )

最佳答案

使用 itertools.dropwhiletakewhile :

l = [-1.1, -1, 0, 1.2, 1.8, 2, 2.88, 2.86, 2.53, 1.98, 1.21, 0.89, 0.11, -0.21]
list(takewhile(lambda x: x > 0, dropwhile(lambda x: x < 2.78, l)))
输出:
[2.88, 2.86, 2.53, 1.98, 1.21, 0.89, 0.11]
或者只是为了得到len :
sum(1 for _ in takewhile(lambda x: x > 0, dropwhile(lambda x: x < 2.78,  l)))
# 7

关于python - 具有开始和结束条件的序列的长度(计数)Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827146/

相关文章:

python - 在数据立方体中使用列表理解

javascript - jsFiddle 逻辑运算符中的圆括号

java - 这个条件意味着什么 if (null == (is = con.getErrorStream()))

python - pandas DataFrame 是否有非复制构造函数

python - Pandas:从 JSON 文件检索嵌套数据

python - 如何修复 httplib.BadStatusLine 异常?

python - 如何从Put路由和Delete的url获取ID

Python 性能 : remove item from list

python - 削减成本算法优化

MySQL合并一些空值,而不是全部空值