【问题标题】:Recursion - list of strings and lists递归 - 字符串列表和列表
【发布时间】:2021-12-16 11:59:40
【问题描述】:

是否可以使用递归将字符串列表和列表转换为普通(普通)列表(这只是一个示例。列表可能更深更复杂)

我还不是很擅长递归,任何帮助或提示将不胜感激!

【问题讨论】:

  • 是的,有可能,这是唯一的问题吗?
  • 在一定程度上肯定是可能的。关于“更深更复杂”部分的说明:Python 中存在最大递归深度。
  • 这正是模块more_itertools 中的函数collapse 所做的。递归in its source-code 基本上遵循与下面 Samwise 的答案相同的逻辑,尽管使用迭代而不是列表,并且具有一些额外的灵活性,例如指定字符串以外的基本类型或最大深度。

标签: python string list recursion


【解决方案1】:

递归的一般思想是将问题分解成更小的部分——找出如何解决最简单的情况,然后以将更复杂的情况缩小为最简单情况的方式表达更复杂的情况。

>>> def flatten(nested):
...     flat = []
...     for i in nested:
...         if isinstance(i, list):
...             flat.extend(flatten(i))
...         else:
...             flat.append(i)
...     return flat
... 
>>> flatten(['hello', ['hey', 'heey', ['hey']], 'hi', ['hihi']])
['hello', 'hey', 'heey', 'hey', 'hi', 'hihi']

flatten 的每次调用都需要一个列表/字符串列表,并且预计会返回一个仅包含字符串的列表。它通过遍历其所有元素并flattening 列表来做到这一点。

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2015-08-16
    • 1970-01-01
    • 2019-07-24
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多