2012-09-20 3 views
-2

튜플과 목록의 목록을 가지고 있습니다 : tup = [(1,2), (2,3), (3,4), (4, 5), (5,6), (6,7)] a = [1,2,3,4,5,6,7]목록에서 튜플 요소를 제거하여 튜플과 목록의 목록을 결합하십시오.

튜플은 실제로리스트의 같은 순서입니다.

[(1,2),3,4,5,6,7] 
[1,(2,3),4,5,6,7] 
[1,2,(3,4),5,6,7] 
[1,2,3,(4,5),6,7] 

숫자는 아무런 제약 조건이 없기 때문에 목록은 중복이 있거나 구별 될 수있다 : 나는 목록을 얻을 :

나는 있도록이 두 구조를 결합해야합니다. 이것은 숙제 문제가 아니며,이를 필요로하는 알고리즘을 구현하려고 노력 중입니다. 어떤 이유로이 작업을 수행하는 좋은 방법을 찾을 수 없습니다.

죄송합니다. 내 질문에 명확하지 않았습니다.

+4

입니다. 튜플 목록에있는 튜플은 항상 목록의 어딘가에 나타 납니까? (그렇다면 항상 함께 나타 납니까?) 그들은 언제나 2-tuple이 될 것입니까? 그들은 언제나 질서 정연해질 것인가? –

답변

3

귀하의 질문에 명확하지 않습니다. 은 먼저 당신이

>>> tup = [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] 
>>> a = [1, 2, 3, 4, 5, 6, 7] 
>>> for i,j in enumerate(tup): 
... print a[:i]+[j]+a[i+2:] 
... 
[(1, 2), 3, 4, 5, 6, 7] 
[1, (2, 3), 4, 5, 6, 7] 
[1, 2, (3, 4), 5, 6, 7] 
[1, 2, 3, (4, 5), 6, 7] 
[1, 2, 3, 4, (5, 6), 7] 
[1, 2, 3, 4, 5, (6, 7)] 

의미 생각하지만 나는 다른 해석

>>> for i,j in enumerate(tup): 
... print a[:i]+[tuple(a[j[0]-1:j[1]])]+a[i+2:] 
... 
[(1, 2), 3, 4, 5, 6, 7] 
[1, (2, 3), 4, 5, 6, 7] 
[1, 2, (3, 4), 5, 6, 7] 
[1, 2, 3, (4, 5), 6, 7] 
[1, 2, 3, 4, (5, 6), 7] 
[1, 2, 3, 4, 5, (6, 7)] 

가 일반적인 경우에 다른 경우 그것은 당신이 tupa에 대해 동일한 번호를 선택 정말 불행한 생각

0

당신이 무엇을 요구하는지 이해하고 있다면 이것은 다른 옵션의 대부분보다 조금 더 일반적이고 관용적이어야합니다 :

import bisect 
[a[:bisect.bisect_left(a, lo)] + \ 
     [(lo, hi)] + \ 
     a[bisect.bisect_right(a, hi):] for (lo, hi) in tup] 

출력 내가 문제를 이해 확실하지 않다

[[(1, 2), 3, 4, 5, 6, 7], 
[1, (2, 3), 4, 5, 6, 7], 
[1, 2, (3, 4), 5, 6, 7], 
[1, 2, 3, (4, 5), 6, 7], 
[1, 2, 3, 4, (5, 6), 7], 
[1, 2, 3, 4, 5, (6, 7)]] 
+0

아, 질문을 다시 읽으면 숫자가 임의적 인 것처럼 보입니다. gnibbler처럼 어떤 값을 함께 사용하든 "zip"을 정렬하고 싶을 것입니다. –

관련 문제