gpt4 book ai didi

python - 在元组上分配字符串

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:35 26 4
gpt4 key购买 nike

所以我试图在一个元组上分配一个字符串。例如:

x = ["a", ("b", ("c", "d"))]

然后我想拥有

x = ["a", ("bc", "bd")]

然后最后:

x = ["abc", "abd"]  

然而,元组并不总是第二个元素:例如:

x = [(("c", "d"), "b"), "a"]

将简化为:

x = [("cb", "db"), "a"]

最后:

x = ["cba", "dba"]

我想知道如何编写一个函数来将第一个表达式直接简化为最后一个。

到目前为止我尝试过的是:

def distribute(x):
if isinstance(x, list) and any([True if isinstance(o, tuple) else False for o in x]):
if isinstance(x[0], tuple):
return (x[0][0] + x[1], x[0][1] + x[1])
else:
return (x[0] + x[1][0], x[0] + x[1][1])

print (distribute(["a", ("b", "c")]))

最终编辑:编辑 Oscars 代码以用于我的第二个示例:

def dist(tpl):
if not isinstance(tpl[1], tuple) and not isinstance(tpl[0], tuple):
return tpl
if isinstance(tpl[1], tuple):
ret = dist(tpl[1])
return [tpl[0] + ret[0], tpl[0] + ret[1]]
elif isinstance(tpl[0], tuple):
ret = dist(tpl[0])
return [ret[0] + tpl[1], ret[1] + tpl[1]]

感谢您的帮助!

最佳答案

试试这个,这是一个适用于问题中两个示例的递归解决方案,假设元组中的两个元素永远不会同时成为元组。

def dist(tpl):
if not isinstance(tpl[0], tuple) and not isinstance(tpl[1], tuple):
return tpl
elif isinstance(tpl[0], tuple):
ret = dist(tpl[0])
return [ret[0] + tpl[1], ret[1] + tpl[1]]
else:
ret = dist(tpl[1])
return [tpl[0] + ret[0], tpl[0] + ret[1]]

它按预期工作:

dist(["a", ("b", ("c", "d"))])
=> ['abc', 'abd']

dist([(("c", "d"), "b"), "a"])
=> ['cba', 'dba']

关于python - 在元组上分配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777581/

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