python小技巧:符合列表区间的数组

result = [[188, 260, 609, 398],
         [97, 471, 162, 496],
         [254, 472, 569, 492],
         [96, 518, 148, 545],
         [256, 522, 381, 562]]

要求将result进行分组,条件是:
如果每个子元素中的第2个和第4个元素区间,存在交叉,即max(a[1], b[1) <min(a[3], b[3])(a, b为列表中的任一子列表),则将该两个子列表,归为一组。
结果为:
[
[[188, 260, 609, 398]], #260-398与下面的区间没有交叉,独立一组
[[96, 518, 148, 545]],  #518-545与下面的区间没有交叉,独立一组
[[97, 471, 162, 496], [254, 472, 569, 492]], #471-496的区间,与472-492的区间存在交叉,
[[256, 522, 381, 562]] #522到562的区间存在交叉
]
#!/usr/bin/env python
result = [[188, 260, 609, 398],
         [97, 471, 162, 496],
         [254, 472, 569, 492],
         [96, 518, 148, 545],
         [256, 522, 381, 562]]
# 不符合的列表
list1 = []
#遍历每一个列表,用  for..in
for i in result:
    #用元组取出第2个和第4个元素,可以自动的设备最大值与最小值的排序
    li = (i[1],i[3])
    li1 = (i[0],i[2])
    if li[0] > li1[0] and li[1] > li1[1] :
        pass
    else:
        result.remove(i)
        list1.append(i)
print(result)
print(list1)

简简单单的编程一步步开始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值