list怎么就超出范围了?代码很短的

我的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

http://img.mukewang.com/5809b96b0001472c04890251.jpg

无无法师
浏览 3530回答 4
4回答

Iamxiaoq

题主是不是js写多了呢?我记得js里的数值可以直接对数组任何一个索引赋值。Python的list是不具备这样的特性的。l = [] # len(l)==0 l的长度为0,里面不存在任何元素,此时若l[0]会引发索引越界异常,这个应该不难理解 l[0] = 0 # 这也会引发越界异常,因为l[0]是不存在的,不能对其进行赋值,Python不像js那样若不存在就给你创建,而是抛出异常 l.append(0) # ok

慕妹5461943

HDYXVOHLYOYVMLVREBHAQDKUGMGWVSHBOUYLUXRNNOOSFZJKMVLMXDRYVICZAJHGZWFVISIMNKTZGDRUNOHBQMSYURHKHNBBMPVUYVEUHXLEWZSJWIMVYPPCMYKWDZNJMNXOIVVRNVOUQQDPDXHXQDWMMDXNEWXBRYORRUVFKTZPYVQFVPPTWOAKADBLHHRLFRNZPXJSIVZGSKWHFWZYEBSSTWVBSIERSJCTACYEOKAXTFVSGZWCIOJPWTANKDRVROKJJNTMXMZQRYPJVCJNJBXKGKXDGDKRKTZPWZLGPDKKPSBXVCWVCDDNQAQQXWTWFZZXCOUDOCWQAYVVJJIIVSADARZTOKQWTWAZDFWJFJGWNAQLEMTKCUEKXKAEOYWBYAWNKGHMZMKUWPFTGNURKAHEKUAQIBVEOOEHHDWEICZVVPWMKXTGKUVOISPSNQNKHSLCCMGMHAGKNYCAUQGGVXDTQXFVJQTKOANDOLLBLEYEQNTAXAGESMSPZLSPSKAAKOHYLHLBOMTJIZTNTUQQBVEZCWKXNKZGTCAOEORUOHELEOHCLPGAHBHZCNTPMAUODCIEPGNHWGEEUEDKXYIEBVRHKUQGLORPZMAQGMIIFICZJGTVTVVBSVMFNNBOXEDAXOSRTNKYHDDJGJAOLPGAQTCZFJAHQPXBFSDJWAXXHOLCTJJPGNDNKHZDENQMANMMVPTJZMYARIEODHHHBAXEANGGGJAHNZVLRYIUXUAUBGTJFFYIRMMKAJPFBJJNTKEHGARNVRERHFVSWNWWMJJSFIBIQFCTAZQJZMJZOGRHSPOEPTMGHWIXOUEIEBYOFSLCVILLERBECRSYUHYUANXEGPPJMJGDQTQSCOKAAHFBYVYBZPBATRUOBNKUPLGDAPVPVFYTDNJMIGMWPUHNQSEELBOXNCLWRQDZQPPVYVYLJFKXYLAATJTWMLQGDACPANIL

芦荟酸奶

count = [i*i for i in range(1,4)] f1,f2,f3 =count print f1,f2,f3这样可读性更好

孤独的小猪

正确代码应该是 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。

檸檬

def count():    fs = []    for i in range(1, 4):        fs.append(i*i)    return fsf1, f2, f3 = count()print (f1, f2, f3)直接这样就好了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python
测试