2016-08-12 5 views
-1

목록 목록이 있습니다.목록 목록 반복 및 값 수정하기

[[1, 2, 3], [4, 2, 7], [9, 5, 6]] 

나는 이전 하위 목록의 첫 번째 요소에 의해 각각의 하위 목록의 첫 번째 요소를 뺄 원하고, 그 후, 나는 또한 제로에 첫 번째 하위 목록의 첫 번째 요소를 설정합니다.

[[0, 2, 3], [3, 2, 7], [5, 5, 6]] 

항복 나는이 몇 번에 대한 함수를 작성하려고하고 내가 통해 반복 할 방법을 알아낼 수 없습니다 - 나는 빼기가 원래 값을 모두 함께하고 싶다면 때문에, 예를 들어, 내가 4를 1 씩 줄이고 두 번째 목록의 첫 번째 요소에 대해 3을 얻은 후에도 나는 3이 아닌 4 (두 번째 목록의 원래 값)만큼 9를 빼기를 원합니다.

처음에는 목록을 거꾸로 반복해야하지만이 작업을 수행하는 방법을 모르는 것 같습니다. 어떤 도움이라도 대단히 감사합니다.

답변

2

질문이 옳다면 하위 목록의 첫 번째 요소 만 수정하면 되겠습니까? 당신은 뒤쪽에서 시작 this-

li = [[1, 2, 3], [4, 2, 7], [9, 5, 6]] 
for i in range(2, 0, -1): 
    li[i][0] = li[i][0] - li[i-1][0] 
li[0][0] = 0 

처럼 뭔가를 할 수 있습니다 (리튬 그것에서 이전 하위 목록의 첫 번째 요소를 빼고 마지막으로 당신이 렌을 사용할 수 있습니다 물론 첫 번째 목록 0의 첫 번째 요소를 설정) -1 대신에 2를 사용하는 것.

+1

1 , -1) : 은 범위 (2, 0, -1)의 i는 이어야합니다. – pRusya

+0

예, 오타입니다. 그 점을 지적 해 주셔서 감사합니다. 나는 내 대답을 편집 할 것이다. – Zeokav

+0

감사합니다. 이 작품은 영리합니다. –

0

당신은 이전 지퍼 - 더 -리스트와-자체 트릭을 사용할 수 있습니다

lists= [[1, 2, 3], [4, 2, 7], [9, 5, 6]] 

i= reversed(lists) # iterate backwards 
next(i) # drop the first (last) list 
j= reversed(lists) # create another reversed iterator, but don't drop the 1st list 
for list1, list2 in zip(i, j): # zip the two iterators 
    list2[0]-= list1[0] 
lists[0][0]= 0 # set first value to 0 
0
lst = [ [1, 2, 3], [4, 2, 7], [9, 5, 6] ] 
# print(lst) 
t = [ lst[0] ] 

for i in range(1, len(lst)): 
    x = [ lst[i][0] - lst[i-1][0] ] 
    x.extend(lst[i][1:]) 
    t.append(x) 

t[0][0] = 0 
print(t) 

결과는 다음과 같습니다 범위 (2 난에 대한

[[0, 2, 3], [3, 2, 7], [5, 5, 6]]