だから私はタプルに文字列を配布しようとしています。例えば:
x = ["a", ("b", ("c", "d"))]
その後、私はしたいです
x = ["a", ("bc", "bd")]
そして最後に:
x = ["abc", "abd"]
ただし、タプルは常に 2 番目の要素である必要はありません。例:
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")]))
最終編集: 私の 2 番目の例で動作するように編集された 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]]
助けてくれてありがとう!