我有一个元组列表,其中包含数组中成对的起始和结束索引点。你知道吗
(2,72), (20,73),(22,70), (25,30)
我想提取一对,比如a,这样数组中没有其他对在a的范围内有开始索引或结束索引。例如,在这里,我第一次提取(25,30)
,因为没有其他对的起点或终点在25到30之间。一旦我提取出来,我就剩下:
(2,72), (20,73),(22,70)
然后我提取(22,70)
,这个列表剩下:
(2,72), (20,73)
因为(2,72)
包含20个,而(20,73)
包含72个,所以不能进一步提取对。你知道吗
暴力手段:
list_tuple
是一个元组列表list_tuple
排序Checklist=[(2,72), (20,73),(22,70), (25,30)]
sortedlist=sorted(Checklist,key=itemgetter(0))
i=0
NewList=list()
len_sortedlist=len(sortedlist)
while i< len_sortedlist:
condition=True
checkpair =sortedlist[i]
removelist=copy.deepcopy(sortedlist)
del removelist[i]
for pair in removelist:# check for every pair if it is within checked pair list
if pair[0] in range(checkpair[0],checkpair[1]) or pair[1] in range(checkpair[0],checkpair[1]) :
condition=False
i=i+1
break
if condition==True:
NewList.append(checkpair)
sortedlist.remove(checkpair)
sortedlist=sorted(sortedlist,key=itemgetter(1))
i=0
len_sortedlist=len(sortedlist)
我想知道有没有更好更有效的方法?你知道吗
使用
itertools
函数,比如ifilter,怎么样?你知道吗相关问题 更多 >
编程相关推荐