파이썬 하나의 리스트 안에서 순서대로 리스트값을 선택하여 다른 리스트로 append하는 방법을 모르겠어요
조회수 692회
예를 들어 제 리스트가
list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
라고 하면
새로운 리스트를
new_list = [[[0,1] ,[0,2], [0,3],.....,[0,15]], [[1, 2], [1, 3], [1, 4],...[1,15]], [[2, 3],....[2,15]],....[[14,15]]]
리스트안에 리스트안에 리스트를 만든다는 건데요.
[x, y]라고 하면 x가 같은 리스트 끼리는 또 다 같은 리스트에 묶이도록 하고싶어요. y는 x보다 하나 큰 거에서 마지막 값인 15까지로 설정하고 싶어요. 꼭 y값이 x보다 커야해요.
sss = [ ]
ttt = [ ]
i = 0
j = 1
while j < len(seq_list):
if j>i:
x = [i,j]
j = j+1
sss.append(x)
if j == len(seq_list):
i = i+1
print(sss)
ttt.append(sss)
j=i+1
이렇게 했는데 모든 집합이 다 sss리스트에 묶여요. 도움 부탁드립니다. ㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
3 답변
-
이렇게 하시면 될 것 같습니다.
L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] result = [] for i in L[:-1]: for i2 in range(i+1, L[-1]+1): result.append([i, i2]) result = result[:-1] # result 값 [ [[0, 1], [0, 2], ... [0, 14], [0, 15]], [[1, 2], [1, 3], ... [1, 14], [1, 15]], ... [[13, 14], [13, 15]], [[14, 15]] ]
아래는 간략화하여 표현한 코드입니다.
L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] result = [[[i, i2] for i2 in range(i+1, L[-1]+1)] for i in L[:-1]]
도움이 되셨길 바랍니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
참고하세요.
src = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] [[[x, y] for y in src[x+1:]] for x in src[:-1]] [[[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15]], [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15]], ... ... [[10, 11], [10, 12], [10, 13], [10, 14], [10, 15]], [[11, 12], [11, 13], [11, 14], [11, 15]], [[12, 13], [12, 14], [12, 15]], [[13, 14], [13, 15]], [[14, 15]]]
-
번외. 스칼라로 해보기
val src = 0 to 15 val r = for(x <- src.slice(0, src.size - 1)) yield for(y <- src.slice(x+1, src.size)) yield (x, y) r(10).foreach(println) (10,11) (10,12) (10,13) (10,14) (10,15) r(12).foreach(println) (12,13) (12,14) (12,15)
댓글 입력