두 목록을 병합,정렬 나는이 개 목록이 목록
[[1, 2], [4, 7], [11, 13], [15, 21]]
[[3, 4], [5,12], [23, 25]]
은이 같은 출력을합니다.
[[1, 2], [3,13], [15, 21], [23, 25]]
아무도 도와 줄 수 있습니까?
두 목록을 병합,정렬 나는이 개 목록이 목록
[[1, 2], [4, 7], [11, 13], [15, 21]]
[[3, 4], [5,12], [23, 25]]
은이 같은 출력을합니다.
[[1, 2], [3,13], [15, 21], [23, 25]]
아무도 도와 줄 수 있습니까?
당신은 그 (것)을 연결 :
def merge(times):
saved = list(times[0])
for st, en in sorted([sorted(t) for t in times]):
if st <= saved[1]:
saved[1] = max(saved[1], en)
else:
yield tuple(saved)
saved[0] = st
saved[1] = en
yield tuple(saved)
lst1 = [[1, 2], [4, 7], [11, 13], [15, 21]]
lst2 = [[3, 4], [5,12], [23, 25]]
print list(merge(sorted(lst1 + lst2)))
출력 :
[(1, 2), (3, 13), (15, 21), (23, 25)]
'lst1'과'lst2'가 바뀌면 작동하지 않습니다. 첫 번째 항목은'merge'가 제대로 작동하려면 "가장 작은"것이어야합니다. –
@ lazyr : 여분의 정렬은이를 해결합니다. :-) –
+1 무엇이 문제인지 짐작할 수 있습니다. – WolframH
어떻게 출력이 결정된다? 나는 그 패턴을 보지 못한다. '[3, 4]',''[4, 7]'과'[11,13]'은 어떻게 [3, 13]이 될까요? –
수 있습니다 정확히 어떻게 그 ouuput 원하는 이해합니까? 5, 12 번은 어디로 갔니? – Shades88
가능한 중복 [시간 범위가 겹치는 시간 범위 튜플 목록 병합] (http://stackoverflow.com/questions/5679638/merging-a-list-of-time-range-tuples-that-have -overlapping-time-ranges); 허용 된 응답은 예상 출력에 대해 완벽하게 작동합니다. –