我有一份数据清单如下:
from shapely.geometry import box
data = [box(1,2,3,4), box(5,6,7,8), box(1,2,3,4)]
codes = ['A','B','C']
列表“data”包含以下元素:
^{pr2}$我要检查一个元素是否与其他元素相交。如果相交,则应放入一个元组;如果不相交,则应放入不同的元组中。预期结果是:
result = [(A,C), (B)]
怎么做?在
我试了一下:
results = []
for p,c in zip(data,codes):
for x in data:
if p.intersects(x): ##.intersects return true if they overlap else false
results.append(c)
print results
创建字典以将代码映射到方框:
^{pr2}$检查所有组合:
元组将是无序的,因为使用了集合。在
对于数据中的每个值,将具有相交值的所有元素组成一个元组。如果列表不在列表中,请将其添加到结果列表中。在
结果是一个元组列表,每个元组都有相同值的所有元素,即相交元素。在
如果元素已经被提取到
results
中,则可以通过不生成元组来提高效率。在注意,对于给定的数据集,与
==
相等而不是相交。在如果需要代码而不是数据,请使用字典而不是变量名。
codes={'A':box(...),..}
保留映射到a、B和C的对象的dict,这是一组匹配的对象,如果没有匹配的元素不在匹配的集合中,则只添加没有匹配的元素,因为所有可能的组合都将被测试:
相关问题 更多 >
编程相关推荐