Python行为

Python行为,python,windows,list,process,Python,Windows,List,Process,我做了一个简单的测试,我试着用Python3.4计算50.000的平方数 首先我试过 num=range(1,50000) sq=lambda x:x**2 print (list(map(sq,num))) 我得到的错误是Python停止工作 然后我试了 sqlist=[] for x in range(1,50000): sq=x**2 sqlist.append(sq) print (sqlist) 我又犯了同样的错误,停止工作 然后我试了一下while循环 同样的错误

我做了一个简单的测试,我试着用Python3.4计算50.000的平方数

首先我试过

num=range(1,50000)
sq=lambda x:x**2
print (list(map(sq,num)))
我得到的错误是Python停止工作

然后我试了

sqlist=[]
for x in range(1,50000):
    sq=x**2
    sqlist.append(sq)
print (sqlist)
我又犯了同样的错误,停止工作

然后我试了一下while循环

同样的错误,但while循环显然比for循环更有效

我做的最后一个测试是

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)
我得到了我想要的,没有错误,显示了50000个数字的平方。我也用for循环完成了这项工作,虽然循环明显比for循环快

那么为什么while循环比for循环快,为什么需要一堆列表呢?为什么单列表抛出错误?最后一种方法比其他方法有更多的进程,更多的代码,更多的东西要检查等等


我认为你在用空闲时间。IDLE不能很好地处理大量文本AFAIK这是Tk的问题。只是不要打印列表

要查看列表,可以将列表写入文件

with open("squareslist.txt") as f:
    f.write(str(sqlist))
然后,您可以在文本编辑器(如记事本)中查看squareslist.txt文件

或者您可以查看列表中的各个元素,例如

print(sqlist[13])

首先,奇怪的是,你在前三个示例中出现了错误,因为它们应该可以正常工作。我测试了它们,它们工作了。您的计算机上的Python可能存在一些问题…您应该发布完整的错误回溯。尽管使用了append操作,但注释中提到,根据容器的历史记录,单个操作可能会花费惊人的时间。我怀疑一次又一次地添加到同一个列表中会花费大量时间重新分配内存和复制数据。这可以解释为什么使用多个列表似乎更有效。我说,Python停止工作,这是错误。@qwerty:你在使用Windows?对此我很抱歉:你能从控制台运行你的脚本吗?IDLE绝对不能处理打印大量的任何东西。
print(sqlist[13])