两次调用“list”后,组消失在“itertools.groupby”中

大卫·阿伦伯格

我正在尝试使用以下似乎有效的代码在 Python 中创建 run-len-encoding

from itertools import groupby
a = [0,0,0,1,1,0,1,0,1, 1, 1]
[list(g) for k, g in groupby(a)]
## [[0, 0, 0], [1, 1], [0], [1], [0], [1, 1, 1]]

但是,当我把gif声明中,它消失

[list(g) if len(list(g)) > 0 else 0 for k, g in groupby(a)]
## [[], [], [], [], [], []]

k另一方面,似乎不受if声明的影响

[k if k > 0 and k == 1 else 0 for k, g in groupby(a)]
## [0, 1, 0, 1, 0, 1]

我需要g使用该if语句提取我正在尝试做的一些未来录音,例如,

import numpy as np
[list(np.repeat(1, len(list(g)))) if len(list(g)) > 1 and k == 1 else list(np.repeat(0, len(list(g)))) for k, g in groupby(a)]

所以我的问题是为什么会发生这种情况(对 Python 来说有点新)并且是否有(我确定有)克服这个问题


编辑

这与问题本身没有直接关系,但我最终在组上rle/inverse.rle使用for循环构建了我groupby

def rle (a):
    indx = 0
    for k, g in groupby(a):
        g_len = len(list(g))
        if g_len == 1 and k == 1:
            a[indx:(indx + g_len)] = [0]
        indx += g_len
斯劳

让我们举一个最小的例子:

def a():
    for i in range(10):
        yield i

b = a()
print(list(b))
print(list(b))

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]

所以你可以看到你只能调用list一次生成器。您需要先分配list(g)给一个变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSOutlineTableView中的textShouldEndEditing被调用两次

来自分类Dev

在DatePicker中调用两次的方法

来自分类Dev

如何修复在React中单击按钮后每次调用两次的调度函数?

来自分类Dev

为什么在调用一个函数后两次将此代码弹出到同一寄存器中两次?

来自分类Dev

首次调用功能后,应用程序中的状态不会更改。需要两次尝试来改变

来自分类Dev

为什么在 C++ 中重载后增量运算符会调用构造函数两次?

来自分类Dev

在同一程序中两次调用srand()

来自分类Dev

在片段中两次调用KeyEvent.KEYCODE_BACK

来自分类Dev

测试在python中两次调用的函数

来自分类Dev

在C ++中,构造函数两次调用过吗?

来自分类Dev

在iframe中两次调用window.onload

来自分类Dev

在RSpec中两次调用同一耙任务

来自分类Dev

无法在AngularJS中两次调用某个函数

来自分类Dev

在构造函数中两次调用InitializeComponent()

来自分类Dev

避免在OnScrollChangedListener中两次调用AsyncTask

来自分类Dev

为什么单击事件在jQuery中调用两次

来自分类Dev

jQuery中的Click事件被调用两次或更多次

来自分类Dev

比较来自同一表和列的两组数据,而无需在MySQL中两次调用该表

来自分类Dev

groupby组中的排名顺序

来自分类Dev

如果C函数被两次调用,它将创建两次在函数中声明的变量吗?

来自分类Dev

用熊猫中的groupby减去两列

来自分类Dev

窗口滚动始终在IE8中调用两次,而不是一次

来自分类Dev

从一次调用中获取两次 Firebase 数据

来自分类Dev

在两个不同的活动中两次调用相同的函数

来自分类Dev

save()被调用一次,但是第一次在猫鼬中执行两次

来自分类Dev

使用 itertools groupby 从分类列表中获取索引值

来自分类Dev

为什么优化后的IL两次将相同的值存储在save变量中?

来自分类Dev

将表单输入放在同一行中两次后失败

来自分类Dev

经过两次浪涌电压后在Ubuntu 16.04中以盲模式启动

Related 相关文章

  1. 1

    NSOutlineTableView中的textShouldEndEditing被调用两次

  2. 2

    在DatePicker中调用两次的方法

  3. 3

    如何修复在React中单击按钮后每次调用两次的调度函数?

  4. 4

    为什么在调用一个函数后两次将此代码弹出到同一寄存器中两次?

  5. 5

    首次调用功能后,应用程序中的状态不会更改。需要两次尝试来改变

  6. 6

    为什么在 C++ 中重载后增量运算符会调用构造函数两次?

  7. 7

    在同一程序中两次调用srand()

  8. 8

    在片段中两次调用KeyEvent.KEYCODE_BACK

  9. 9

    测试在python中两次调用的函数

  10. 10

    在C ++中,构造函数两次调用过吗?

  11. 11

    在iframe中两次调用window.onload

  12. 12

    在RSpec中两次调用同一耙任务

  13. 13

    无法在AngularJS中两次调用某个函数

  14. 14

    在构造函数中两次调用InitializeComponent()

  15. 15

    避免在OnScrollChangedListener中两次调用AsyncTask

  16. 16

    为什么单击事件在jQuery中调用两次

  17. 17

    jQuery中的Click事件被调用两次或更多次

  18. 18

    比较来自同一表和列的两组数据,而无需在MySQL中两次调用该表

  19. 19

    groupby组中的排名顺序

  20. 20

    如果C函数被两次调用,它将创建两次在函数中声明的变量吗?

  21. 21

    用熊猫中的groupby减去两列

  22. 22

    窗口滚动始终在IE8中调用两次,而不是一次

  23. 23

    从一次调用中获取两次 Firebase 数据

  24. 24

    在两个不同的活动中两次调用相同的函数

  25. 25

    save()被调用一次,但是第一次在猫鼬中执行两次

  26. 26

    使用 itertools groupby 从分类列表中获取索引值

  27. 27

    为什么优化后的IL两次将相同的值存储在save变量中?

  28. 28

    将表单输入放在同一行中两次后失败

  29. 29

    经过两次浪涌电压后在Ubuntu 16.04中以盲模式启动

热门标签

归档