gpt4 book ai didi

python - 如何在python中找出具有相同结构的两个列表?

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

定义一个过程,same_structure,接受两个输入。它应该输出True 如果列表具有相同的结构,False否则。如果满足以下条件,则两个值 p 和 q 具有相同的结构:

Neither p or q is a list.

Both p and q are lists, they have the same number of elements, and each
element of p has the same structure as the corresponding element of q.

编辑:为了使图片清晰,以下是预期的输出

same_structure([1, 0, 1], [2, 1, 2])
---> True
same_structure([1, [0], 1], [2, 5, 3])
---> False
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['d', 'e']]]])
---> True
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['de']]]])
---> False

我认为递归是解决 python 中这个问题的最佳方法我想出了以下代码,但它不起作用。

def is_list(p):
return isinstance(p, list)

def same_structure(a,b):
if not is_list(a) and not is_list(b):
return True
elif is_list(a) and is_list(b):
if len(a) == len(b):
same_structure(a[1:],b[1:])
else:
return False

最佳答案

而不是 same_structure(a[1:],b[1:]),您需要检查项目对 a 和 b 一个接一个

def is_list(p):
return isinstance(p, list)

def same_structure(a, b):
if not is_list(a) and not is_list(b):
return True
elif (is_list(a) and is_list(b)) and (len(a) == len(b)):
return all(map(same_structure, a, b)) # Here
return False

关于python - 如何在python中找出具有相同结构的两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075355/

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