2014-12-16 3 views
0

간단한 테스트를했는데, 50.000까지 숫자의 제곱을 취하려고했습니다. 파이썬 3.4를 사용합니다.파이썬 동작

처음에 시도해 보았습니다.

num=range(1,50000) 
sq=lambda x:x**2 
print (list(map(sq,num))) 

나는 파이썬를 작동하지 않을 것입니다 오류가 발생했습니다.

그런 다음 시도했습니다.

sqlist=[] 
for x in range(1,50000): 
    sq=x**2 
    sqlist.append(sq) 
print (sqlist) 

다시 같은 오류가 발생했습니다. 작업을 중단하십시오.

그런 다음 으로 시도했지만 루프와 함께 시도했습니다.

sqlist=[] 
t=1 
while t<50001: 
    t+=1 
    sq=t**2 
    sqlist.append(sq) 
print (sqlist) 

다시 같은 오류가 있지만, 루프가 명확 루프 이상 살아있다.

마지막 테스트입니다.

sqlist=[] 
sqlist1=[] 
sqlist2=[] 
sqlist3=[] 
sqlist4=[] 
t=1 
while t<50001: 
    t+=1 
    sq=t**2 
    if t<10000: 
     sqlist.append(sq) 
    elif t<20000: 
     sqlist1.append(sq) 
    elif t<30000: 
     sqlist2.append(sq) 
    elif t<40000: 
     sqlist3.append(sq) 
    elif t<50000: 
     sqlist4.append(sq) 

print (sqlist,sqlist1,sqlist2,sqlist3,sqlist4) 

나는 원하는 것을 얻었고, 오류도없고, 50,000까지 숫자의 제곱을 보여줍니다. 나는 루프로, 을, 루프는 분명히 루프보다 빠릅니다.

는 왜 동안 루프는 루프 보다 빠른 이유는리스트의 무리를해야합니까? 왜 단일 목록에 오류가 발생합니까? 마지막 방법은 다른 것보다 더 많은 프로세스를 가지고 있습니다. 더 많은 코드를 확인해야합니다.

+3

먼저 문제가 없어야하므로 처음 세 가지 예에서 오류가 발생했습니다. 나는 그들을 테스트하고 그들은 일한다. 컴퓨터에 파이썬에 몇 가지 문제가있을 수 있습니다. – bosnjak

+0

전체 오류 추적을 게시해야합니다. –

+2

'append()'연산 [O (1) 복잡성] (https://wiki.python.org/moin/TimeComplexity)이 있지만, 메모에는 * 개별 동작은의 역사에 따라 놀랄만큼 오래 걸릴 수 있음을 언급하고 있습니다. 컨테이너에 * 동일한 목록에 반복해서 추가하는 것이 많은 시간을 소비하여 메모리를 다시 할당하고 데이터를 복사하는 것으로 의심됩니다. 이것은 왜 여러 목록을 사용하는 것이 더 효율적인지를 설명 할 수 있습니다. –

답변

0

IDLE을 사용하고 있다고 생각합니다. IDLE은 많은 양의 텍스트에서 잘 작동하지 않습니다 (AFAIK 이것은 Tk의 문제점입니다). 목록을 인쇄하지 마십시오.

목록을 보려면 목록을 파일에 쓸 수 있습니다.

그런 다음 squareslist.txt 파일을 메모장과 같은 텍스트 편집기에서 볼 수 있습니다.

또는 목록의 개별 요소를 볼 수 있습니다 (예 :

print(sqlist[13]) 
+0

유휴 (IDLE)는 확실히 인쇄 * 다량의 양을 처리 할 수 ​​없습니다. – wwii