2012-05-09 5 views

답변

34

게시 방법은 SyntaxError입니다.
하지만 진술 내용은 []입니다. 그런 다음 list comprehension은 100 개의 임의 숫자가 포함 된 목록을 만듭니다. 그것은이 코드에 해당 :

whatever = [] 
for i in range(100): 
    whatever.append(randrange(10**10)) 

코드 내부 () 대신 [] 그것이 generator expression 것, 그 즉시 상품이지만 필요에 만들어지지, 즉 반복 가능 인 경우.

+2

그것은 [] 안에 있었으므로 그 목록을 이해할 것 같습니다. – KodeSeeker

25

자체적으로 구문 오류가 발생합니다. 괄호 안에, 그것은 generator expression입니다 :

(randrange(10**10) for i in range(100)) 

한 번에 randrange(10**10), 하나에 100 호출의 결과를 얻을 것이다 발전기를 돌려줍니다. 대괄호 안에

, 그것은 list comprehension입니다 :

[randrange(10**10) for i in range(100)] 

randrange(10**10) 각각의 호출로 인한 100 개 번호의 목록을 반환합니다.

발전기 표현식의 장점은 명료성으로 평가되기 때문에 메모리에서 전체 목록을 구성하고 유지할 필요가 없다는 것입니다 (특히 매우 큰, 아마도 무한한 발전기와 관련이 있습니다).