gpt4 book ai didi

python - 总结列表的值与 Python 中的相应索引值

转载 作者:行者123 更新时间:2023-12-03 20:25:57 25 4
gpt4 key购买 nike

我用一个大列表来表示很多需要的值,这对我来说真的很复杂。

例如:

    [[[a,b,c],[d,e,f]],
[[g,h,i],[j,k,l]],
[[o,p,u],[r,s,t]]]

我想把三个主要指标和它们对应的值结合在一起。我不是要串联。

例如,结果将是:
    [[(a+g+o),(b+h+p),(c+i+u)],[(d+j+r),(e+k+s),(f+l+t)]]

有人可以帮助我如何实现这个结果吗?谢谢!

最佳答案

干得好。既然你说添加,我假设 a、b、c 等都是整数。

>> a = [[[1,2,3],[4,5,6]],
... [[7,8, 9],[10, 11, 12]],
... [[16, 17, 18],[13, 14, 15]]]

>>> temp_list = list(zip(*b) for b in zip(*a))
>>> result = [[sum(list(a)) for a in b] for b in temp_list]
>>> result
[[24, 27, 30], [27, 30, 33]]

一个令人生畏的单线将是:
[[sum(list(a)) for a in b] for b in list(zip(*b) for b in zip(*a))]

让我们一行一行地浏览代码。
  • zip(*a)会给你:
    >>> zip(*a)
    [([1, 2, 3], [7, 8, 9], [16, 17, 18]), ([4, 5, 6], [10, 11, 12], [13, 14, 15])]

    它组合了子列表的第一个最里面的列表。
  • 我们需要再做一次 zip在这一点上。list(zip(*b) for b in zip(*a))会给我们:
    [[(1, 7, 16), (2, 8, 17), (3, 9, 18)], [(4, 10, 13), (5, 11, 14), (6, 12, 15)]]
  • 现在我们只需要总结这些并创建一个列表列表。所以我们这样做:
    [[sum(list(a)) for a in b] for b in temp_list]

  • 如果列表会很大,我建议使用 itertools ' 版本 zip izip() .但是 izip()返回一个生成器而不是一个列表。因此,您需要将其转换为列表。

    关于python - 总结列表的值与 Python 中的相应索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925902/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com