【发布时间】:2016-03-02 17:24:47
【问题描述】:
这里是代码
def list_all(obj):
"""
Return a list of all non-list elements in obj or obj's sublists, if obj is a list. Otherwise, return a list containing obj.
@param list|object obj: object to list
@rtype: list
>>> obj = 17
>>> list_all(obj)
[17]
>>> obj = [1, 2, 3, 4]
>>> list_all(obj)
[1, 2, 3, 4]
>>> obj = [[1, 2, [3, 4], 5], 6]
>>> all([x in list_all(obj) for x in [1, 2, 3, 4, 5, 6]])
True
>>> all ([x in [1, 2, 3, 4, 5, 6] for x in list_all(obj)])
True
"""
if not isinstance(obj, list):
return obj
else:
return [list_all(x) for x in obj]
当我尝试print(list_all([[2,3],[4,5]])) 时,它会打印出完全相同的输入,这意味着代码什么都不做。我认为问题在于[] 括号,但我想不出一种消除方法。有人可以帮忙吗?
【问题讨论】:
-
我看不到您的代码不起作用,请更具体!
-
刚刚编辑过,很抱歉造成混乱
-
你想做什么?要展平列表列表?
-
将嵌套列表变成单个列表。即 [[1, 2, [3, 4], 5], 6] -> [1,2,3,4,5,6]
-
@DavidZemens 这仅适用于单个级别,OP 需要递归解决方案
标签: python list python-3.x recursion