2011-02-15 2 views
14

timedelta 객체 목록을 만들었으므로이 목록의 평균을 얻어야합니다. 내가은 timedelta 객체 목록에서 평균이 필요합니다.

return (sum(delta_list)/(len(delta_list)-1)) 

을 할 때 나는 형식 오류를 얻을 : 지원되지 않는 피연산자 유형 (들) +에 대한 : 난 비단뱀의 날짜 클래스를 사용한 작업에 새로운 오전 'INT'와 'datetime.timedelta'

합니다. 나는 또한이 평균을 일과 같은 형식으로 만드는 방법을 알고 싶다 : 시간 : 분 : 나는 분보다 작은 것을 필요로하지 않는다.

+4

'감사합니다 .' 미리 감사 드리며 나중에 감사하는 것을 잊지 마십시오. 답을 수락하는 법을 배우십시오. – user225312

+0

게시 한 코드에 어떤 문제가 있습니까? 오류가 발생합니까? 당신이 얻은 오류를 보여 주시겠습니까? –

+0

붙여 넣기를 잊어 버렸습니다. 질문을 편집하여 오류를 포함 시켰습니다. – cferbs

답변

25

sum는 기본적으로 0있는 시작 값을 원하지만, 0 그래서 당신이 오류를 얻을 timedelta에 추가 할 수 없습니다.

# this is the average 
return sum(delta_list, timedelta())/len(delta_list) 

당신이 할 수 그것을 밖으로 인쇄하려면 :

당신은 시작에 불과 값으로 sumtimedelta()을 제공해야

print str(some_delta) 

당신이 뭔가 당신이 some_delta.days을 얻을 수있는 사용자 정의하려는 경우와 some_delta.seconds하지만 모든 것을 계산해야합니다.

+0

@cferbs : 그렇습니다. 합계 (..)/len (..) 평균을 구하십시오. –

+0

고마워요! – cferbs

+0

파이썬 3.3에서는 '//'연산자를 사용해야합니다 : –

2

datetime.timedelta 개체에는 일, 마이크로 초 및 초에 액세스하는 특성이 있습니다.

>>> import datetime 
>>> daybefore = datetime.timedelta(days=1) 
>>> dayminus2 = datetime.timedelta(days=2, minutes=60) 
>>> daybefore.days 
1 
>>> dayminus2.days, dayminus2.seconds 
(2, 3600) 

가 60

3

sum() function하여 초를 분할해야 할거야 분을 얻기 위해 할 수있는 반복 가능한 모든 항목을 추가 할 시작 값을 필요로 : 당신은 예를 들어, 쉽게 다음을 참조 할 수 있습니다 . 기본값은 0이며, 이는 inttimedelta을 추가하는 중 오류가 발생하는 이유입니다.

는이 문제를 해결하기 위해, 단지 sum에 두 번째 인수로서 timedelta 객체를 전달한다

(인수와 timedelta 만들기 하나가 0 시간차에 대응 만든다.)

또한 평균을 항목 수는 일반적으로 항목 수를 항목 수로 나눈 값의 합이므로 len(delta_list)에서 1을 뺄 필요가 없습니다.

이러한 변경 사항은 귀하가 명세서에서 일부 대괄호를 제거 할 수 있음을 의미합니다.

그래서 이것은 당신을 제공 : 모든

return sum(delta_list,timedelta())/len(delta_list) 
3

첫째, sum 기본적 0 (제로의 값의 정수)입니다 초기 값으로 목록에서 모든 요소를 ​​추가합니다. 그러므로 sumtimedelta의 목록에 사용하려면 timedelta(0) 인수 - sum(delta_list, timedelta(0))을 전달해야합니다.

둘째, 왜 목록 길이에서 하나를 뺍니까? 목록의 길이가 1 인 경우 ZeroDivisionError이 표시됩니다.

위의 내용을 수정하면 timedelta 개체가 평균이됩니다. 그것을 인간이 읽을 수있는 형식으로 변환하는 방법 나는 운동으로 떠날거야. datetime module documentation은 가능한 모든 질문에 대답해야합니다.

+0

잘못된 것을 깨달았습니다. http://stackoverflow.com/questions/179716/average-difference-between-dates-in-python의 다른 샘플 코드와 혼동을 느낍니다. – cferbs

관련 문제