对于像这样的嵌套列表
<div ui-calendar="controller.uiConfig.calendar" id="calendar" ng-model="controller.eventSources"></div>
如何平坦化第一个元素,使其成为这个?
alist = [[[1],[2],[3]],[1,2]]
我尝试了两个扁平环,但它也使其他元素变平了
[[1],[2],[3],[1,2]]
答案 0 :(得分:0)
使用:
out = alist[0] + alist[1:]
print (out)
[[1], [2], [3], [1, 2]]
答案 1 :(得分:0)
您可以通过
执行此操作def unlist_nested(L):
if all(type(x) == list for x in L):
return sum(map(get_inner, L), [])
return [L]
alist = [[[1],[2],[3]],[1,2]]
unlist_nested(alist)
>>>[[1], [2], [3], [1, 2]]
答案 2 :(得分:0)
您可以使用如下的生成器功能:
In [17]: def flatten(iterable):
for sub in iterable:
if isinstance(sub[0], list):
yield from sub
else:
yield sub
....:
In [18]: list(flatten(alist))
Out[18]: [[1], [2], [3], [1, 2]]
但请注意,由于我们正在检查子列表中第一个元素的类型以决定是否展平,只有当您想要展平那些列出所有项目的子列表时,这才有效。不过,如果您希望它处理所有情况,您可能需要检查子列表中是否有任何列表(可能使用any()
)。
答案 3 :(得分:0)
您可以在head
和tail
中拆分嵌套列表,并将它们相加:
>>> alist = [[[1],[2],[3]],[1,2]]
>>> head, *tail = alist
>>> head + tail
[[1], [2], [3], [1, 2]]
如果您想进一步展平名单:
>>> [x for l in (head + tail) for x in l]
[1, 2, 3, 1, 2]
如果您想要展平两个第一个列表:
>>> alist = [[[1],[2],[3]],[[4], [5], [6]], [1,2]]
>>> head1, head2, *tail = alist
>>> head1 + head2 + tail
[[1], [2], [3], [4], [5], [6], [1, 2]]