如果组中的任何一个成员与组中的另一个成员有邻居关系,如何按函数分组?

2024-10-01 00:26:57 发布

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

更新1: 如果相同的颜色是相邻的,则将其分组

如果组中的任何一个成员与组中的另一个成员有邻居关系,如何按函数分组?你知道吗

if x coordinate same and y coordinate difference is 1 then return 1 #same memeber
if y coordinate same and x coordinate difference is 1 then return 1 #same memeber
else return 0 #not group memeber

回溯(最近一次呼叫): 文件“”,第1行,在 TypeError:isneighborlocation()正好接受2个参数(给定1个)

from itertools import groupby 

testing1 = [(1,1),(2,3),(2,4),(3,5),(3,6),(4,6)] 
def isneighborlocation(lo1, lo2): 
    if abs(lo1[0] - lo2[0]) == 1  or lo1[1] == lo2[1]: 
        return 1 
    elif abs(lo1[1] - lo2[1]) == 1  or lo1[0] == lo2[0]: 
        return 1 
    else: 
        return 0 

groupda = groupby(testing1, isneighborlocation) 
for key, group1 in groupda: 
    print key 
    for thing in group1: 
        print thing 



expect output 3 group 
group1 [(1,1)] 
group2 [(2,3),(2,4)] 
group3 [(3,5),(3,6),(4,6)] 

Tags: andcoordinatereturnifis成员elsesame
1条回答
网友
1楼 · 发布于 2024-10-01 00:26:57

groupby中的函数参数只接受一个参数,因此必须使用分部函数来添加“额外”参数。你知道吗

https://docs.python.org/3/library/functools.html#functools.partial

from functools import partial 
...
groupda = groupby(testing1, partial(isneighborlocation, centre))

当然,这意味着您必须明确地测试每个“中心”。
顺便说一句,请注意groupby上的排序要求-它似乎可能会绊倒您。你知道吗

相关问题 更多 >