加入python中的列表列表在python中将列表列表加入单个列表(或迭代器)的简短语法是什么?例如,我有一个如下列表,我想迭代a,b和c。x = [["a","b"], ["c"]]我能想到的最好的是如下。result = [][ result.extend(el) for el in x] for el in result:
print el
3 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
如果你只是深入一级,嵌套的理解也会起作用:
>>> x = [["a","b"], ["c"]]>>> [inner... for outer in x... for inner in outer]['a', 'b', 'c']
在一行,这成为:
>>> [j for i in x for j in i]['a', 'b', 'c']
慕虎7371278
TA贡献1802条经验 获得超4个赞
这被称为展平,并且有很多实现:
这个怎么样,虽然它只适用于1级深度嵌套:
>>> x = [["a","b"], ["c"]]>>> for el in sum(x, []):... print el...a b c
从这些链接,显然最完整,快速优雅等实现如下:
def flatten(l, ltypes=(list, tuple)): ltype = type(l) l = list(l) i = 0 while i < len(l): while isinstance(l[i], ltypes): if not l[i]: l.pop(i) i -= 1 break else: l[i:i + 1] = l[i] i += 1 return ltype(l)
添加回答
举报
0/150
提交
取消