python - 你需要什么拉链?
问题描述
最后,我看到了这段代码。我不明白你需要什么拉链(第 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
解决方案
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):
...
虽然它也适用于可迭代对象,所以它与我提供的基于索引的代码不太等价,但我认为无论如何它应该很清楚。
推荐阅读
- javascript - Rails - 从 app/views 中的 js.erb 调用 app/javascript 中的 JS 函数
- typescript - 在接口中定义时,字符串文字类型的字段分配错误
- python - django ModelAdmin 中的高级查询集。AttributeError:“dict”对象没有属性“_meta”
- php - Laravel 代码清理不需要的对象属性并仅提取 laravel 5.4 中需要的属性?
- webpack - 如何在 Vue 应用程序的头部有条件地添加代码
- c# - 同一列上具有多个外键的实体框架核心
- amazon-web-services - 在 AWS lambda 失败时添加重试逻辑,如果仍然失败发送警报
- node.js - Azure Web App for Containers 未设置环境变量
- javascript - 是否可以创建一个不可编辑的 JavaScript 对象?
- css - Angular 6:如何动态更改页面背景颜色