使用列表推导从嵌套的Python数据结构中获取值列表?

稻田3118

在使用耐心排序计算最长的递增子序列时,我创建了一个(值,反向链接)对的嵌套元组,然后我需要对其进行爬网以按顺序获得所有值。目前,我使用一个小函数来执行此操作,但我想知道是否有一种方法可以使用列表推导来执行相同的操作。

该示例使用了我的原始程序中的namedtuple,并应说明我的问题:

>>> from collections import namedtuple
>>> P = namedtuple('P', 'val, back')
>>> q = P(val=15, back=P(val=11, back=P(val=9, back=P(val=6, back=P(val=2, back=P(val=0, back=None))))))
>>> q
P(val=15, back=P(val=11, back=P(val=9, back=P(val=6, back=P(val=2, back=P(val=0, back=None))))))
>>> #Request something like:
>>> [val for val, q in q]
Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    [val for val, q in q]
  File "<pyshell#68>", line 1, in <listcomp>
    [val for val, q in q]
TypeError: 'int' object is not iterable
>>> q
P(val=15, back=P(val=11, back=P(val=9, back=P(val=6, back=P(val=2, back=P(val=0, back=None))))))
>>> # Wanted: [15, 11, 9, 6, 2, 0]
>>> 
>>> # Have to use:
>>> def _unwind(q):
    u = []
    while q:
        u.append(q.val)
        q = q.back
    return u

>>> q
P(val=15, back=P(val=11, back=P(val=9, back=P(val=6, back=P(val=2, back=P(val=0, back=None))))))
>>> _unwind(q)
[15, 11, 9, 6, 2, 0]
>>> 

我一直在寻找一种设置P的方法,所以我可以这样写:

[val for val, q in q]

也许通过以某种方式重写P .__ iter__和P .__ next__来优雅地重新定义P的iter协议?

虚假的

请尝试以下操作:

>>> from collections import namedtuple
>>>
>>> class P(namedtuple('_P', 'val back')):
...     def __iter__(self):
...         while self:
...             yield self.val, self.back
...             self = self.back
...
>>> q = P(val=15, back=P(val=11, back=P(val=9, back=P(val=6, back=P(val=2, back=P(val=0, back=None))))))
>>> [val for val, back in q]
[15, 11, 9, 6, 2, 0]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python中的事件列表数据结构

来自分类Dev

应用中的可修改列表使用什么数据结构?

来自分类Dev

转换数据结构中的列表

来自分类Dev

使用map和pluck从嵌套列表中获取值

来自分类Dev

使用Python中的嵌套列表推导从列表中过滤出项目

来自分类Dev

Julia中的嵌套列表推导

来自分类Dev

Python:从树状数据结构中的列表列表创建组合

来自分类Dev

Python:从树状数据结构中的列表列表创建组合

来自分类Dev

使用列表推导从python中的列表中删除列表?

来自分类Dev

使用jinja2模板(列表和字典)将Python数据结构转换为js数据结构

来自分类Dev

多个列表上的Python嵌套列表推导

来自分类Dev

python-嵌套列表结构中的聚合数据

来自分类Dev

使用列表推导创建嵌套列表

来自分类Dev

使用Python列表理解从嵌套元组字典结构检索数据

来自分类Dev

列表和子列表数据结构

来自分类Dev

我如何从数据列表中获取值

来自分类Dev

使用scala从spark中的嵌套结构数据框中获取值

来自分类Dev

嵌套列表推导如何在python中工作?

来自分类Dev

列表推导中的嵌套循环和条件检查(python)

来自分类Dev

嵌套列表推导如何在python中工作?

来自分类Dev

转换嵌套列表推导以在python中使用itertools链

来自分类Dev

python:列表和字典之间的数据结构效率

来自分类Dev

Haskell中树数据结构的邻接列表

来自分类Dev

从R中的列表制作数据结构

来自分类Dev

C中的数据结构-在列表的开头插入节点

来自分类Dev

从列表中获取值的Python方式

来自分类Dev

如何从字典Python列表中获取值?

来自分类Dev

Java和Python中的数据结构及其实现:列表,数组,元组

来自分类Dev

Python(2.7)可用的数据结构是否比标准库中的标准列表,集合,元组字典更多?

Related 相关文章

  1. 1

    python中的事件列表数据结构

  2. 2

    应用中的可修改列表使用什么数据结构?

  3. 3

    转换数据结构中的列表

  4. 4

    使用map和pluck从嵌套列表中获取值

  5. 5

    使用Python中的嵌套列表推导从列表中过滤出项目

  6. 6

    Julia中的嵌套列表推导

  7. 7

    Python:从树状数据结构中的列表列表创建组合

  8. 8

    Python:从树状数据结构中的列表列表创建组合

  9. 9

    使用列表推导从python中的列表中删除列表?

  10. 10

    使用jinja2模板(列表和字典)将Python数据结构转换为js数据结构

  11. 11

    多个列表上的Python嵌套列表推导

  12. 12

    python-嵌套列表结构中的聚合数据

  13. 13

    使用列表推导创建嵌套列表

  14. 14

    使用Python列表理解从嵌套元组字典结构检索数据

  15. 15

    列表和子列表数据结构

  16. 16

    我如何从数据列表中获取值

  17. 17

    使用scala从spark中的嵌套结构数据框中获取值

  18. 18

    嵌套列表推导如何在python中工作?

  19. 19

    列表推导中的嵌套循环和条件检查(python)

  20. 20

    嵌套列表推导如何在python中工作?

  21. 21

    转换嵌套列表推导以在python中使用itertools链

  22. 22

    python:列表和字典之间的数据结构效率

  23. 23

    Haskell中树数据结构的邻接列表

  24. 24

    从R中的列表制作数据结构

  25. 25

    C中的数据结构-在列表的开头插入节点

  26. 26

    从列表中获取值的Python方式

  27. 27

    如何从字典Python列表中获取值?

  28. 28

    Java和Python中的数据结构及其实现:列表,数组,元组

  29. 29

    Python(2.7)可用的数据结构是否比标准库中的标准列表,集合,元组字典更多?

热门标签

归档