2014-10-23 4 views
0

나는 초급 파이썬 질문이 있습니다. 목록에서 나온 for 루프의 결과를 가져 와서 목록으로 다시 되돌릴 수 있는지 궁금합니다. 이런 식으로 보이는 코드가 있습니다.파이썬 For 루프 목록에

이 목록의 결과는 내 데이터베이스에 테이블을 만드는 데 사용할 수있는 것이기를 바랍니다. 저는 파이썬 2.7을 윈도우 7에서 사용하고 있습니다. 파이썬의 문서를 훑어보고 스택 교환에 관한 질문을 살펴 보았습니다. 아직도 혼란 스럽습니다.

답변

3

확실히.

그냥 print 분명히 목록에 추가되지 않습니다. 그러나 목록에서 append 메서드를 호출하면 자습서의 Lists 섹션에 설명되어 있습니다. 예를 들어 :

mynewlist = [] 
for a in mylist: 
    result = q.myfunction(a) 
    print q, a 
    mynewlist.append(result) 

새 목록을 생성 할 일은 원하는 모든 경우, 다른 부작용은 list comprehension는 더 간단하지 않습니다. 이 코드 :

mynewlist = [q.myfunction(a) for a in mylist] 

... print과 동일합니다. 당신은 당신이 다음과 같은 작업을 수행 할 수 루프를 사용하여 사용하는 경우

+1

for 루프는 목록 이해와 동일한 기능을 수행하지 않습니다. 루프는'(q, a)'를 수집하고 이해는'(결과, a)'를 수집합니다. – Dunes

+0

@Dunes : 아, 좋은 지적이야. 분명히'(q, a)'는'q.myfunction'이 부작용에 대해서만 호출되지 않는 한 매우 유용하지 않습니다. (그 경우 왜 결과를'result'에 저장합니까?); 편집 됨. – abarnert

1

이게 원하는가요?

[q.myfunction(a) for a in mylist] 

목록 이해라고합니다.

2

:

results = [] 
for a in mylist: 
    result = q.myfunction(a) 
    results.append(result) 

그러나, 파이썬에서 이런 일을 할 수있는 관용적 방법은 지능형리스트로 알려진 것을 사용하는 것입니다. 목록 내포는 다른 목록의 요소에서 새 목록을 생성하는 방법입니다. 예를 들어, 다음은 for 루프와 완전히 동일한 효과를가집니다.

results = [q.myfunction(a) for a in mylist]