同一lis的多次迭代

2024-09-29 23:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据列表如下:

from shapely.geometry import box

data = [box(1,2,3,4), box(4,5,6,7), box(1,2,3,4)]
sublists = [A,B,C]

“数据”列表包含以下子列表:

A = box(1,2,3,4)
B = box(4,5,6,7)
C = box(1,2,3,4)

我要检查子列表是否相交。如果相交,它们应该放在一个元组中;如果不相交,它们应该放在不同的元组中。预期结果是:

result = [(A,C), (B)]

怎么做?你知道吗

我试着这样做:

results = []
for p,c in zip(data,sub_lists):
    for x in data:
        if p.intersects(x): ##.intersects return true if they overlap else false
            results.append(c)
print results

Tags: 数据infromimportbox列表fordata
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:29

无需下载shapely,我认为您想要对列表执行的操作可以使用字符串(或整数)进行复制:

In [221]: data=['one','two','three']    
In [222]: data1=['one','four','two']

In [223]: results=[[],[]]
In [224]: for i in data1:
    if i in data:
        results[0].append(i)
    else:
        results[1].append(i)
   .....:         

In [225]: results
Out[225]: [['one', 'two'], ['four']]

intersects测试替换i in dataresults的第一个子列表包含测试为真的data1的元素。第二个子列表包含它为false的元素。你知道吗

你的问题有点混乱,因为datasublists似乎包含相同的元素。所以也许你不是在测试A是否在data(或者与data的元素相交),而是测试A是否与[A,B,C]的其他元素相交,等等

在任何情况下,收集结果的关键是在results中有两个(或更多)插槽,您可以根据测试在其中放置iresults也可以是字典,也可以是两个不同的变量。e、 g.results={'found':[],'lost':[]}。你知道吗

我们需要在考试上做更多的工作吗?你知道吗

A 'intersects with' any of [B,C]
B 'intersects with' any of [A,C]
C 'intersects with' any of [A,B]

相关问题 更多 >

    热门问题