2015-02-01 2 views
0

목록에서 가져온 두 값을 기반으로 계산을 수행 한 다음 결과를 추가하는 함수를 작성했습니다. 목록의 목록에있는 모든 목록에 대해이 함수를 적용하여 계산을 수행하는 방법을 알고 싶습니다. 지금까지 나는 음침한 실패를 만났습니다. 제안Python 목록 목록에 MyFunction 적용

Horses = [['Sea Biscuit', '10:57:06', '10:58:42']['Red Rum', '10:57:06', '10:59:02']['Blazing saddles', '10:57:06', '10:59:16']] 

많은 감사를하고

도움 :

import datetime 

Horse = ['Sea Biscuit', '10:57:06', '10:58:42'] 

#My Function used to get times from the list and calculate speed in MPH 

def get_speed(): 
    time1 = Horse[1] 
    time2 = Horse[2] 
    d = 1 #Assuming a distance of 1 mile 
    FMT = '%H:%M:%S' 
    tdelta = datetime.datetime.strptime(time2, FMT) - datetime.datetime.strptime(time1, FMT) 
#Convert from timedelta HH:MM:SS format to hours by first converting to a string 
    stringtime=str(tdelta) 
    parts = stringtime.split(':') 
    hours = int(parts[0])*1 + int(parts[1])/60 + int(parts[2])/3600 

    speed = round((d/hours),2) 

    Horse.append (speed) 

get_speed() 

그래서 목록의 목록이 같은 모습에이 기능을 적용 할 :

내가 지금까지 일을 알고있다

답변

1

더 우아한 클래스 기반 솔루션이있을 수 있지만 문제를 처리하는 가장 빠른 방법은 for 루프를 사용하는 것입니다.

for horse in Horses: 
    def get_speed(horse) 

그런 다음 출력을 저장하는 위치를 파악하고 싶습니다.

+0

참으로 ... 많은 감사합니다! 그것은 지금 나를 격파하고있는 각리스트에 출력을 추가하고있다 !! – robmal

1

데이터를 출력하는 방법에 따라 다릅니다. 고려해야 할 질문에 대답 할 수도 있지만 결과물을 목록으로 사용하고 싶습니다. 당신은 같은 것을 할 수

: 그 기본적으로 SO

times = map(get_speed, Horses) 

을, (구문)

variable = map(func, list) 

지도 실행

파이썬의 Map 기능은 사용자가보고 싶은 게있을 수 있습니다 목록의 각 구성원에 대한 기능

여기에 파이썬의지도 함수에 대한 흥미로운 토론이 있습니다. https://stackoverflow.com/a/10973817/1318675지도는 실제로 map이 중첩 된 반복 함수 호출과 같은 느낌을 주는지 설명합니다.

편집 : 여기에 실행 코드가 있습니다. 내가 변경 한 사항을 확인하십시오. 하위 목록에는 쉼표가 필요하며 부분은 정수가 아닌 십진수로 입력해야합니다. 그렇지 않으면 다음 단계에서 속도를 나눌 때 0으로 나눗셈을 얻을 수 있습니다 (단, ! 제로가)

LINK : http://ideone.com/0rlCLy

편집 2 : 영업 파이썬 3에서 파이썬 3를 사용하고,지도 목록을 반환하지만, 목록에 반복자를 반환하지 않습니다. 변환을 나열 할지도 피할 직접 (목록을 반복하는 일반 반복자로 사용할 수 있지만 http://ideone.com/EwcCnQ

: 여기

return Horse #Returns the changed horse object back to map 

Horses = list(map(get_speed, Horses)) #convert iterator back to list 

실행 코드 : 따라서, 코드는 다음과 같은 추가 변경해야 또한 더 효율적 일 수 있습니다!)

+0

와우! 정말 신속하고 포괄적 인 응답에 감사드립니다. 나는 링크를 따라하고 숙제를 할 것이다! – robmal

+0

예! 이것을 답으로 표시하는 것을 잊지 마십시오! – ShivamMax

+0

인쇄물 (목마)은 속도가 추가되지 않고 원래의 목록 만 보여줍니다. -/ – robmal

관련 문제