간단한 테스트를했는데, 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까지 숫자의 제곱을 보여줍니다. 나는 을 루프로, 을, 루프는 분명히 루프보다 빠릅니다.
는 왜 동안 루프는 루프 보다 빠른 이유는리스트의 무리를해야합니까? 왜 단일 목록에 오류가 발생합니까? 마지막 방법은 다른 것보다 더 많은 프로세스를 가지고 있습니다. 더 많은 코드를 확인해야합니다.
먼저 문제가 없어야하므로 처음 세 가지 예에서 오류가 발생했습니다. 나는 그들을 테스트하고 그들은 일한다. 컴퓨터에 파이썬에 몇 가지 문제가있을 수 있습니다. – bosnjak
전체 오류 추적을 게시해야합니다. –
'append()'연산 [O (1) 복잡성] (https://wiki.python.org/moin/TimeComplexity)이 있지만, 메모에는 * 개별 동작은의 역사에 따라 놀랄만큼 오래 걸릴 수 있음을 언급하고 있습니다. 컨테이너에 * 동일한 목록에 반복해서 추가하는 것이 많은 시간을 소비하여 메모리를 다시 할당하고 데이터를 복사하는 것으로 의심됩니다. 이것은 왜 여러 목록을 사용하는 것이 더 효율적인지를 설명 할 수 있습니다. –