首页 > 解决方案 > 你需要什么拉链?

问题描述

最后,我看到了这段代码。我不明白你需要什么拉链(第 4 行)。

这是比较嵌套结构的代码

def same_structure_as(original,other):
    if type(original) != type(other) or len(original) != len(other):
        return False
    for org_val, other_val in zip(original, other):
            if type(org_val) != type(other_val):
                return False
            if type(org_val) is list and type(other_val) is list:
                if not same_structure_as(org_val, other_val):
                    return False
    return True

标签: python

解决方案


Zip 允许您同时遍历两个列表。这只是一个方便的捷径。因此,不要编写此代码:

for i in range(min(len(original), len(other))): # stop at the end of the smallest list
    org_val = original[i]
    other_val = other[i]
    ...

你可以写:

for org_val, other_val in zip(original, other):
    ...

虽然它也适用于可迭代对象,所以它与我提供的基于索引的代码不太等价,但我认为无论如何它应该很清楚。


推荐阅读