如何解决有人可以解释这个列表理解的功能吗?
我对以下代码示例有疑问。这种编码风格非常先进,我正在尝试获取每一行。我不明白 in_clusters
数组。我认为列表理解在那里使用。元素 current
是数组 current_inds
中的可迭代对象。但是itr in current
在做什么?这些是 2 个 for 循环,还是 1 个 while 循环和 1 个 for 循环。可以用简单的循环来写这种行吗?
clusters = []
current_inds = []
itr = 0
for slope,intercept in zip(slopes,intercepts):
in_clusters = np.array([itr in current for current in current_inds])
if not in_clusters.any():
slope_cluster = np.logical_and(slopes < (slope+slope_similarity_threshold),slopes > (slope-slope_similarity_threshold))
intercept_cluster = np.logical_and(intercepts < (intercept+intercept_similarity_threshold),intercepts > (intercept-intercept_similarity_threshold))
inds = np.argwhere(slope_cluster & intercept_cluster & slopes_horizontal).T
if inds.size:
current_inds.append(inds.flatten())
clusters.append(lines[inds])
itr += 1
merged_lines = [np.mean(cluster,axis=1) for cluster in clusters]
merged_lines = np.array(merged_lines).reshape((-1,4))
解决方法
[itr in current for current in current_inds]
让我们添加几个括号:
[(itr in current) for current in current_inds]
这里的 itr in current
是表达式,它被计算并添加到由理解创建的列表中。其余的理解只是标准的。
相当于:
result = []
for current in current_inds:
if itr in current:
result.append(True)
else:
result.append(False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。