2016-08-19 7 views
0

나는 파이썬 목록의 목록을 통해 반복하고있어, 나는 중첩 된리스트의 요소 중 일부 날짜 형식을 변경하고 싶습니다. 나는 시도했다 :파이썬에서 중첩 목록의 요소를 업데이트하는 방법은 무엇입니까?

for dividend in dividend_data: 
    for date in dividend[1], dividend[3], dividend[4], dividend[5]: 
     date = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d") 

그러나 "날짜"변수는 원래의 목록 요소로 옮겨지지 않는다. 오른쪽이 처리하는 더 나은 방법이 있어야

dividend[1] = datetime.strptime(dividend[1], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[3] = datetime.strptime(dividend[3], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[4] = datetime.strptime(dividend[4], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[5] = datetime.strptime(dividend[5], '%m/%d/%Y').strftime("%Y-%m-%d") 

을하지만 : 나는 개별적으로 취급하여이 작업을 수행 할 수 있습니다?

답변

1

나는 당신이 실제로 날짜 변수를 변경하는 것을 생각하지 않습니다. 있음

for date in dividend[1], dividend[3], dividend[4], dividend[5]: 

날짜라는 변수를 만듭니다. 이 변수를 변경하면 해당 배열의 실제 값을 변경하는 것과 다릅니다. 당신이 할 필요가 있습니다 것은 무엇 일어나는 것은 당신이, 당신은 단지 빨리 덮어 지역 변수의 값으로 새로운 일을 지정하고 목록 요소를 변경하지 않을 것입니다

for i in 1, 3, 4, 5: 
    dividend[i] = datetime.strptime(dividend[i], '%m/%d/%Y').strftime("%Y-%m-%d") 
0
for dividend in dividend_data: 
    for index in (1,3,4,5): 
     date = dividend[index] 
     dividend[index] = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d") 

입니다 다음 일은 결코 목록에 영향을 미치지 않습니다.

그래서, 인덱스를 잡고 목록의 항목을 변경하기보다는 새 변수를 할당, 위와 같이 해.

0

이것은 실제로 중첩 된 목록과 관련이 없지만 일반적으로 나열됩니다. 해당 위치에서 편집 할 수는 있지만 요소 사본으로는 수행 할 수 없습니다.

for idx in (1,3,4,5): 
    dividend[idx] = datetime.strptime(dividend[idx], '%m/%d/%Y').strftime("%Y-%m-%d") 
0

색인을 대신 사용하십시오. 문제는 날짜 그래서 새로운 데이터 형식과 동일한 단지 변수를 설정하는 재 할당 배열의 값에서 별도의 변수이다. 대신이 시도 :

for dividend in dividend_data: 
    for date_num in range(1, 6): 
     dividend[date_num] = datetime.strptime(dividend[date_num], '%m/%d/%Y').strftime("%Y-%m-%d") 
관련 문제