从多维列表的每个子列表访问给定元素而无需for循环

用户名

假设我有一个列表列表,例如:

list0 = [[a, .5, .3], [b, .3, .8], [c, .7, 1.3], [d, 1.03, .2]]

我想调用每个子列表的第二个元素,以输出到我认为可行的列表。

输入: print(list0[:][1])

输出: [b, .3, .8]

但我希望能得到这个: (.5, .3, .7, 1.03)

有没有一种可能的方法可以调用所有子列表并访问它们的元素,而无需遍历整个列表来创建新的子列表?您能否比较时间并描述为什么我们不能调用所有子列表或某个范围的子列表来从每个子列表中获取元素而不循环两次,一次获取子列表,一次访问每个子列表?

hpaulj
In [196]: list0 = [['a', .5, .3], ['b', .3, .8], ['c', .7, 1.3], ['d', 1.03, .2]]

比较时间:

推荐清单理解:

In [197]: timeit [l[1] for l in list0]
410 ns ± 17.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

从“ transpose”的列表版本开始:

In [198]: timeit list(zip(*list0))[1]
661 ns ± 3.63 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

从数组中选择一列:

In [199]: timeit np.array(list0)[:,1]
16 µs ± 177 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

numpy问题经常问“无循环”的原因是,在numpy数组上进行Python级别的迭代速度很慢。在可能的情况下,我们想使用快速编译的numpy代码(仍然有循环)。但是,从列表开始时,创建数组相对昂贵。

从数组开始,列索引很快:

In [200]: %%timeit A = np.array(list0)
     ...: A[:,1]
325 ns ± 11.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

数组上的迭代比列表上的相同迭代慢:

In [201]: %%timeit A = np.array(list0)
     ...: [a[1] for a in A] 
5.47 µs ± 96.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生成列表元素对的每个排列,而无需重复或反向

来自分类Dev

更新列表中的所有元素而无需循环

来自分类Dev

更新列表中的所有元素而无需循环

来自分类Dev

SASS在每个循环上访问嵌套的多维列表

来自分类Dev

循环列表列表,同时轻松访问每个元素

来自分类Dev

我可以在循环中更改单个子组件而无需重新呈现整个列表(反应钩子)

来自分类Dev

如何在R中使用FOR循环访问多维列表元素

来自分类Dev

根据给定的索引TypeError访问列表的每个元素

来自分类Dev

序言:显示每个子列表的每个元素

来自分类Dev

更改列表中的值而无需循环

来自分类Dev

Python:在给定索引列表的情况下访问多维列表的元素

来自分类Dev

将向量中的所有元素与列表中的所有元素进行比较,而无需for循环

来自分类Dev

将向量中的所有元素与列表中的所有元素进行比较,而无需for循环

来自分类Dev

从多维列表创建字典,而无需重复键

来自分类Dev

突变嵌套列表中的数据框而无需for循环

来自分类Dev

C#并行读取对列表的访问而无需复制

来自分类Dev

给定索引列表访问字典的特定元素

来自分类Dev

获取列表中的元素,而无需在Python中使用if或for块

来自分类Dev

根据我的给定列表获取行,而无需修改顺序或使列表唯一

来自分类Dev

获取元素在Python中每个子列表中出现的位置

来自分类Dev

For循环遍历每个子元素

来自分类Dev

Scala列表列表计算每个子列表索引的不同元素

来自分类Dev

生成具有A子列表和每个子列表中的B元素的列表

来自分类Dev

循环访问嵌套列表“ ol”元素

来自分类Dev

列表元素访问的while循环问题

来自分类Dev

重命名列表的命名列表的某些部分,而无需for循环

来自分类Dev

从给定索引和许多元素的列表中创建一个子列表。序言

来自分类Dev

返回列表中某个元素的所有位置,而无需递归,但使用列表生成器

来自分类Dev

访问矩阵的每个索引而无需索引或使用for / while循环

Related 相关文章

  1. 1

    生成列表元素对的每个排列,而无需重复或反向

  2. 2

    更新列表中的所有元素而无需循环

  3. 3

    更新列表中的所有元素而无需循环

  4. 4

    SASS在每个循环上访问嵌套的多维列表

  5. 5

    循环列表列表,同时轻松访问每个元素

  6. 6

    我可以在循环中更改单个子组件而无需重新呈现整个列表(反应钩子)

  7. 7

    如何在R中使用FOR循环访问多维列表元素

  8. 8

    根据给定的索引TypeError访问列表的每个元素

  9. 9

    序言:显示每个子列表的每个元素

  10. 10

    更改列表中的值而无需循环

  11. 11

    Python:在给定索引列表的情况下访问多维列表的元素

  12. 12

    将向量中的所有元素与列表中的所有元素进行比较,而无需for循环

  13. 13

    将向量中的所有元素与列表中的所有元素进行比较,而无需for循环

  14. 14

    从多维列表创建字典,而无需重复键

  15. 15

    突变嵌套列表中的数据框而无需for循环

  16. 16

    C#并行读取对列表的访问而无需复制

  17. 17

    给定索引列表访问字典的特定元素

  18. 18

    获取列表中的元素,而无需在Python中使用if或for块

  19. 19

    根据我的给定列表获取行,而无需修改顺序或使列表唯一

  20. 20

    获取元素在Python中每个子列表中出现的位置

  21. 21

    For循环遍历每个子元素

  22. 22

    Scala列表列表计算每个子列表索引的不同元素

  23. 23

    生成具有A子列表和每个子列表中的B元素的列表

  24. 24

    循环访问嵌套列表“ ol”元素

  25. 25

    列表元素访问的while循环问题

  26. 26

    重命名列表的命名列表的某些部分,而无需for循环

  27. 27

    从给定索引和许多元素的列表中创建一个子列表。序言

  28. 28

    返回列表中某个元素的所有位置,而无需递归,但使用列表生成器

  29. 29

    访问矩阵的每个索引而无需索引或使用for / while循环

热门标签

归档