gpt4 book ai didi

python - 如何从展平列表创建嵌套列表?

转载 作者:太空狗 更新时间:2023-10-30 01:51:51 28 4
gpt4 key购买 nike

我写了一个函数来创建一个嵌套列表。

例如:

input= ['a','b','c','','d','e','f','g','','d','s','d','a','']

我想在 '' 之前创建一个子列表

作为返回,我想要一个嵌套列表:

[['a','b','c'],['d','e','f','g'],['d','s','d','a']]

最佳答案

尝试下面的实现

>>> def foo(inlist, delim = ''):
start = 0
try:
while True:
stop = inlist.index(delim, start)
yield inlist[start:stop]
start = stop + 1
except ValueError:
# if '' may not be the end delimiter
if start < len(inlist):
yield inlist[start:]
return


>>> list(foo(inlist))
[['a', 'b', 'c'], ['d', 'e', 'f', 'g'], ['d', 's', 'd', 'a']]

另一种可能的实现方式是 itertools.groupby .但是你必须过滤结果以删除 ['']。但是,尽管它可能看起来是单行的,但上面的实现更像 pythonic,因为它直观且可读

>>> from itertools import ifilter, groupby
>>> list(ifilter(lambda e: '' not in e,
(list(v) for k,v in groupby(inlist, key = lambda e:e == ''))))
[['a', 'b', 'c'], ['d', 'e', 'f', 'g'], ['d', 's', 'd', 'a']]

关于python - 如何从展平列表创建嵌套列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13339986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com