[请益] 循环逻辑问题 (leetcode, python)

楼主: lemonrude (脸猛鲁)   2020-05-24 01:10:31
以下代码如果用 Default = False
跑循环的时候会说 default reference before assignment
https://i.imgur.com/giv72v8.jpg
但如果把 Default 改成一个List 然后指到list 的第0位 却可以成功执行
请问为什么python的资料结构只能参照外面的list 跟dic ? 不能参照外面的单一variabl
e吗?
https://i.imgur.com/uRoopVD.jpg
恳请解惑谢谢!
如果发文在这里有不妥 请版主删文
不好意思
作者: freeunixer (御剑客)   2020-05-24 01:25:00
你看这个板像 python 板吗?
作者: peien0312 (忍耐)   2020-05-24 01:27:00
https://bit.ly/2ZzFRqX我不是写python的,不过我猜你需要宣告global才能用,至于阵列是因为那个变量直接指到指标的位置,所以才能直接用,详细的请其他高手回答
作者: MOONY135 (谈无欲)   2020-05-24 01:38:00
看起来是ref的问题
作者: CYFer (cyf994)   2020-05-24 01:39:00
这个问题很有意思,我尝试回答看看。 python的特性是如果function内部有宣告variable=...这类的,python会把这个变量当成local variable。因此你function外面的default,如果没有用global 是认不得的。那为什么dict()或list()可以呢?因为list[idx],其实是在做function call哦!call的是 list.__getitem__ 或 list.__setitem__
作者: MOONY135 (谈无欲)   2020-05-24 01:44:00
作者: CYFer (cyf994)   2020-05-24 01:56:00
补充一下,python认变量的时候有LEGB原则。你在function 内写了 default=true,已经让function把里面的default认成local variable了,所以以local variable的角度去看你的function, 确实没有宣告一个创始数值因此报错~
作者: drajan (EasoN)   2020-05-24 02:46:00
Python写那么久我也是现在才学到l[i]是function call! 感谢楼上在function内部要使用外部的变量可以加nonlocal这个keyword
作者: zo6596001 (超帅肥宅)   2020-05-24 11:25:00
python List 默认 Call by reference
作者: sxy67230 (charlesgg)   2020-05-24 12:45:00
我看了一下,你的gobal明明是bool但是第一个图functionforloop内的default却给他一个default[0]==false的条件判断,这边逻辑就蛮怪的。python 默认在function 外的宣告就是gobal了......
作者: CaptPlanet (ep)   2020-05-24 12:48:00
https://www.google.com/amp/s/www.geeksforgeeks.org/is-python-call-by-reference-or-call-by-value/amp/
作者: sxy67230 (charlesgg)   2020-05-24 12:56:00
另外,LEGB的原则是在宣告上的,依次是local func->enclosed->global->buildit,从内找到外,如果python 编译器都找不到函式宣告才会跳nameError打错,*变量宣告
作者: final01 (牛顿运动定律)   2020-05-24 13:06:00
懂点脑好吗?讨论程式码用贴图
作者: pptpptppt (暱称)   2020-05-24 13:17:00
代码
作者: jacknotblack (大飞飞)   2020-05-24 13:24:00
真的看不出这跟soft job有啥关
作者: wayne12345 (lightrain)   2020-05-24 13:47:00
可以去搜寻variable scope,会有你要的解释
作者: splitline (台ㄎ废文王)   2020-05-24 15:58:00
代码
作者: Saaski (GreedIsGood)   2020-05-24 17:21:00
代码
作者: tttkkk (学到。)   2020-05-24 18:36:00
在 dfs() 里的第一行放 global default蛮有趣的观察,Python 自动将复杂资料结构如List, Dict隐含call by reference 传入函式了。
作者: iceman5566 (iceman5566)   2020-05-24 20:05:00
可怜
作者: kingofsdtw (不能閒下來!!)   2020-05-24 20:23:00
纯嘘贴图
作者: s29940 (阿赐)   2020-05-25 18:18:00
不想变D卡
作者: rugia813 (rugia)   2020-05-26 15:42:00
回去你们中国的论坛问啊

Links booklink

Contact Us: admin [ a t ] ucptt.com