2009-02-23 17 views
9

에 대한 대체 코드 another post에서 다음과 같은 "잘못된"코드 단편을 볼 수 있습니다. 그러나 필자가 보았던 유일한 대안은 파이썬 패치입니다.xrange (len (x))의 i 대신

for i in xrange(len(something)): 
    workwith = something[i] 
    # do things with workwith... 

"반 패턴"을 피하려면 어떻게해야합니까?

답변

22

예를 들어 Pythonic

for workwith in something: 
    # do things with workwith 
+1

: 시간의 80 %가이 무엇을 당신 의미. –

+0

값을 수정하지 않는 한 괜찮습니다. 뭔가있는 일을 위해서 을 고려해보십시오. workwith + = – vartec

+0

@vartec : 사실이긴하지만, 알람 질문은 주어지지 않습니다. – kmkaplan

0

를 참조하십시오

x 무엇
[workwith(i) for i in something] 
+0

'something'은 객체의 모음입니다. 원래부터 '무언가'가 반드시 정수가 아니며 '작업과 함께'는 전혀 모음이 아닌 것으로 나타났습니다. 'workwith'는 '무언가'를 가진 workign을위한 임시 변수 인 것처럼 보입니다. – hughdbrown

-3

? 시퀀스 또는 반복자 또는 문자열 인 경우

for i in x: 
    workwith = i 

잘 작동합니다.

+0

SilentGhost의 답변이 더 좋음 :-) – Xolve

+0

이것이 가장 적합한 상황을 생각할 수 없습니다. 그것은 kmkaplan의 답변의 열등한 버전 인 것 같습니다. (나는 kmkaplan 전에 게시되었음을 알고 있지만, 명백하게 우월한 제안이 제시되면 대답을 삭제할 수 있습니다.) 그럼에도 불구하고, -1을 쓰지는 않았습니다. 다른 사람. – ToolmakerSteve

23

는 루프 본문의 인덱스를 알고 싶다면 :

for index, workwith in enumerate(something): 
    print "element", index, "is", workwith 
+1

+1 : 20 %의 시간, 이것은 당신이 의미 한 것입니다. –

12

있기 때문에 질문의 저자 (가정 각각) 완벽하게 유효한 질문에 twoanswers 우리를 통보하지 않았다 인덱스의 운명에 대해, 올바른 대답 읽어야합니다

당신 do not need index 모든 경우 :

for workwith in something: 
    print "element", workwith 
,691 363,210

need index 당신이 만약 내 대답은 적절하지 않은 경우

for index, workwith in enumerate(something): 
    print "element", index, "is", workwith 

는, 제발 언급, 나는 그것을 :) 삭제됩니다

가 +1
+1

+1 : 아니오, 귀하의 답변이 가장 적절하고 실제로 가장 완벽합니다. – tzot