python - 获取Python列表的所有元素,包括子列表

标签 python list

Possible Duplicate:
Flatten (an irregular) list of lists in Python

我有一个 python 列表,其元素可以是字母或字母列表。我想编写一个函数来提取所有元素,如下所示

假设

l=['a',['b',['c']] ]

The output need to be ['a','b','c']

我认为递归是执行此操作的正确方法。 基本情况可能是列表仅包含一个元素。 我尝试编写此代码..但输出是

['a', 'b', ['c']]

有人可以告诉我这里出了什么问题吗?

def get_all_elements(mylist):
    if len(mylist)==1:
        return mylist[0]
    else:
        output=[mylist[0]]
        output+=get_all_elements(mylist[1:])
        return output

最佳答案

这似乎工作正常:

def flatten(iterable):
   out = []
   for i in iterable:
      if hasattr(i,'__iter__'):
         out.extend(flatten(i))
      else:
         out.append(i)
   return out

l=['a',['b',['c']] ]   
print flatten(l)

你出错的地方是,在你的解决方案中,mylist[0]本身可以是一个列表(长度为1),其中包含另一个列表(任意长度)。在这种情况下,您只需将其退回即可。

关于python - 获取Python列表的所有元素,包括子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976927/

相关文章:

java - 读取文件并映射到有向图

python - WSGIDaemonProcess 的 django apache 配置不起作用

python - 对 DataFrame 的每 3 行进行 Yield 和操作

c# - 对类型为 T 的列表进行排序

xml - 如何用 XML 表示列表数据

css - Joomla:重新启动列表项编号

python - 正则表达式用括号前的空格替换点

python - NetworkX:在 for 循环中绘制图形返回错误的图形

python - cmake 调用 python 脚本并验证

c# - 在 C# 列表中查找最少出现的成员