gpt4 book ai didi

python - python中的展平列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:01 25 4
gpt4 key购买 nike

我看过很多关于如何在 Python 中展平列表的帖子。但我一直无法理解这是如何工作的:reduce(lambda x,y:x+y,*myList)

谁能解释一下这是如何工作的:

>>> myList = [[[1,2,3],[4,5],[6,7,8,9]]]
>>> reduce(lambda x,y:x+y,*myList)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

链接已发布:

How to print list of list into one single list in python without using any for or while loop?

Flattening a shallow list in Python

Flatten (an irregular) list of lists

如果有人认为这与其他帖子重复,我会在了解它的工作原理后将其删除。

谢谢。

最佳答案

用简单的英语来说,reduce 的作用是做两件事:

  1. 一个函数f:
    1. 恰好接受 2 个参数
    2. 返回使用这两个值计算的值
  2. 可迭代的 iter(例如 liststr)

reduce 计算 f(iter[0],iter[1]) 的结果(iterable 的前两项),并跟踪这个值这是刚刚计算出来的(称之为 temp)。 reduce 然后计算 f(temp,iter[2]) 并且现在跟踪这个新值。此过程一直持续到 iter 中的每一项都已传递到 f 中,并返回计算出的最终值。

使用 **myList 传递给 reduce 函数是因为它接受一个可迭代对象并将其转换为多个参数。这两行做同样的事情:

myFunc(10,12)
myFunc(*[10,12])

myList 的情况下,您使用的是 list,其中只包含一个 list。因此,将 * 放在前面会将 myList 替换为 myList[0]

关于兼容性,请注意 reduce 函数在 Python 2 中工作得很好,但在 Python 3 中你必须这样做:

import functools
functools.reduce(some_iterable)

关于python - python中的展平列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454820/

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