2013-01-15 4 views
3

이 여기 내 첫 번째 질문 ...파이썬 namedtuple 슬라이스

내가 아래

같은 namedtuple의 컬렉션을 가지고 배열을 가지고
bla = [FDResult(S=100.0, Payoff=0.0, V=0.4693541525097441), 
FDResult(S=102.0, Payoff=1.0, V=0.4944046100897207), 
FDResult(S=104.0, Payoff=1.0, V=0.5188897967596792), 
FDResult(S=106.0, Payoff=1.0, V=0.5427339609362274), 
FDResult(S=108.0, Payoff=1.0, V=0.5658731041633024)] 

어떻게 배열 슬라이스를 얻을 수 있습니까? 어떤 제안은 감사

'목록'개체가 어떤 속성 'S'를이 없습니다 ... : AttributeError : 오류와 함께 작동하지 않습니다

bla[:].S #I want to get [100.0,102.0,104.0,...] as a result 

. 감사합니다. .

+0

그게 무슨 조각이 아니에요. 슬라이싱은 하나의 콜렉션에서 인덱스 범위를 선택합니다 (예 :'l [-2 :]'는 마지막 두 요소가'l '인 새로운 목록을 반환합니다), 멤버의 속성을 선택하지 않습니다. – millimoose

+1

'bla [:]'는 목록의 복사본을 제공합니다. 조각은 요소의 일부를 뽑지 않습니다. 요소의 일부 하위 집합 만 제공합니다. @ wim의 답변과 같이 목록 이해가 필요합니다. – Eevee

답변

6

나는 당신은 물론, 예를 들어, 거기에 목록의보다 일반적인 슬라이스를 대체 할 수 있습니다 예를

[x.S for x in bla[:]] 

를 들어, 당신이 list comprehension 싶은 생각 bla[1:-1:2].

+2

'for x in bla'가 될 수도 있지만 사본을 만들 필요는 없습니다. – millimoose

+0

제가 읽었을 때,이 질문의 요점은 _ 슬래시 _를 사용하는 것이 었습니다. 그래서 슬라이스의 일반적인 예가되는 'bla [:]'슬라이스를 남겼습니다 (OP도 사용함). – wim

+1

내가 읽었을 때, 전체적인 점은 슬라이스가하는 일에 대한 기본적인 오해였습니다. (여기서 완전히 쓸모없는 것으로 보입니다.) – millimoose