我有这张单子:
["a", "b", ["c", ["d", "e"], "f"]]
我希望将每个列表中的字符串元素连接在一起,同时保持列表结构。
预期的行为如下所示:
>>> test_list = ["a", "b", ["c", ["d", "e"], "f"]]
>>> function(test_list)
["ab", ["c", ["de"], "f"]]
它将与此非常相似,但它必须能够处理任意数量的嵌套列表。
我试图用一个递归函数来解决它,但没有得到预期的结果。
有什么提示吗?
使用递归,您可以通过以下方式实现
l = ["a", "b", ["c", ["d", "e"], "f"]]
def func(s):
res = []
tmp = []
val = None
for i in s:
if type(i)==str:
tmp.append(i)
else:
res.append(''.join(tmp))
tmp = []
val = nested2str(i)
res.append(val)
if tmp!=[]:
res.append(''.join(tmp))
return res
result = func(l)
print(result)
输出
['ab', ['c', ['de'], 'f']]
可以将itertools.groupby
与递归一起使用:
from itertools import groupby as gb
d = ["a", "b", ["c", ["d", "e"], "f"]]
def combine(d1):
return [i for a, b in gb(d1, key=lambda x:isinstance(x, str))
for i in ([''.join(b)] if a else [combine(k) for k in b])]
print(combine(d))
输出:
['ab', ['c', ['de'], 'f']]
问题内容: 使用MSSQL 2008和XQUERY 考虑以下存储在表中的XML: 我想将此xml分解为类似 等等。 注意:在此示例中,每个ParentElement可能有许多ChildElements。我一直在尝试使用xquery,但是我无法像这样浏览复杂的元素。 基本上,我正尝试与FOR XML对表进行完全相反的操作,只是要使用一组更为简单的数据。 关于下一步或如何实现此目标的任何想法? 谢谢
问题内容: 我想在Redis中维护一些元数据。 它按预期工作。 现在,我想在此meta_data结构中保留一个列表,并能够将元素添加到列表中。 例如: 但这立即引发异常: 我认为我可以创建一个新密钥并用于维护列表。但是我想尽量减少密钥的数量。这是因为用户注销后,我需要快速使密钥失效。将密钥保持在最低限度可以帮助我 1)快速移出按键 2)避免出现错误,因为用于保持制表符的键较少 有什么办法可以使列表
据我解释,可以用任何表示,其中是或的超级类。同样的逻辑适用于也是。那么是?
问题内容: 假设我有一个表示某些嵌套列表的字符串,我想将其转换为真实的东西。我认为可以做到这一点: 但是在用户可能提供字符串来执行的环境中,这可能是/将不是一个好主意。是否有人对完成相同任务的整洁解析器有任何想法? 问题答案: import ast >>> mylist = ast.literal_eval(“[‘foo’, [‘cat’, [‘ant’, ‘bee’], ‘dog’], ‘bar
问题内容: 一个作业有一个真正的问题(和头痛)… 我在入门编程班上,我必须写一个函数,给定一个列表,该函数将返回其达到的“最大”深度。例如:[1,2,3]将返回1,[ 1,[2,3]]将返回2 … 我已经编写了这段代码(这是我能得到的最好的T_T) 但是,它显然不像应有的那样工作,因为如果存在不计入最大深度的列表,它仍然会增加计数器… 例如:当我将函数与[1,2,[3,4],5,[6],7]一起使
如何使用MapStruct映射嵌套列表? 下面是我的实体类: 我想把它映射到: 现在,我的映射器看起来像: 但它只映射“普通”属性,如Long、intger等,但它避免了嵌套列表。