我的fs[i-1]根据我的估计,在循环过程中会产生fs[0],fs[1],fs[2]这三个数,不会超呀??哪位大侠帮忙看看,代码很短的# -*- coding: utf-8 -*-
def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs[i-1]=f()
#fs.append(f(i))
return fs
f1, f2, f3 = count()
print f1, f2, f3
4 回答
已采纳
Iamxiaoq
TA贡献33条经验 获得超6个赞
题主是不是js写多了呢?我记得js里的数值可以直接对数组任何一个索引赋值。Python的list是不具备这样的特性的。
l = [] # len(l)==0 l的长度为0,里面不存在任何元素,此时若l[0]会引发索引越界异常,这个应该不难理解 l[0] = 0 # 这也会引发越界异常,因为l[0]是不存在的,不能对其进行赋值,Python不像js那样若不存在就给你创建,而是抛出异常 l.append(0) # ok
孤独的小猪
TA贡献232条经验 获得超302个赞
正确代码应该是 def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j * j return g r = f(i) fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3()
建议你仔细看看python闭包知识,http://www.imooc.com/code/6059。
檸檬
TA贡献1条经验 获得超0个赞
def count():
fs = []
for i in range(1, 4):
fs.append(i*i)
return fs
f1, f2, f3 = count()
print (f1, f2, f3)
直接这样就好了
添加回答
举报
0/150
提交
取消