【发布时间】:2016-12-13 07:12:23
【问题描述】:
'a = [1,2,[12,5,(6,7,9)],[34,56]] lambda l: [子列表中的子列表项]
ab = lambda a: [子列表中的子列表项]
打印(ab(a))'
我想要这样的输出 [1,2,12,5,6,7,9,34,56]
【问题讨论】:
标签: python-2.7 python-3.x lambda
'a = [1,2,[12,5,(6,7,9)],[34,56]] lambda l: [子列表中的子列表项]
ab = lambda a: [子列表中的子列表项]
打印(ab(a))'
我想要这样的输出 [1,2,12,5,6,7,9,34,56]
【问题讨论】:
标签: python-2.7 python-3.x lambda
享受:
def convert(lst):
if all(not isinstance(e, (list, tuple)) for e in lst):
return lst[:]
else:
result = []
for e in lst:
if isinstance(e, (list, tuple)):
converted = convert(e)
result.extend(converted)
else:
result.append(e)
return result
【讨论】:
我将其视为文本处理工作。首先将传入列表转换为字符串表示形式,然后将字符串拆分为每个包含一个元素的小部分,最后我使用一个空列表接收这些新鲜元素。这是我的代码片段:
def simpleL(complexL):
a =repr(complexL).split(',')
c=[]
for i in a:
element =i.strip('[()] ')
if element.isdigit():
c.append(int(element))
return c
【讨论】:
output = []
def uni_lst(lst):
if type(lst) in [list, tuple]:
for x in lst:
if type(x) in [list, tuple]:
uni_lst(x)
else:
output.append(x)
return output
以上代码将从任何类型的列表或元组中创建一个列表。
【讨论】:
isinstance 内置函数检查实例:isinstance(lst, (list, tuple)) 而不是type(x) in [list, tuple](详见 PEP8:python.org/dev/peps/pep-0008)。另一个缺点是使用了全局对象output,一个好的函数必须在里面做所有的操作。