我从潜水到python 3书中学习python,他们真的没有解释列表推导中的变量是否是随机的。这是在python shell中运行的一个例子:
import os, glob
glob.glob('*.xml') ①
['feed-broken.xml', 'feed-ns0.xml', 'feed.xml']
[os.path.realpath(f) for f in glob.glob('*.xml')] ②
['c:\\Users\\pilgrim\\diveintopython3\\examples\\feed-broken.xml',
'c:\\Users\\pilgrim\\diveintopython3\\examples\\feed-ns0.xml',
'c:\\Users\\pilgrim\\diveintopython3\\examples\\feed.xml']
f来自哪里?它是随机的吗?
答案 0 :(得分:3)
我假设您打算询问他们是否任意。是的,你可以在这里使用任何名称而不是f,e。 G。 os.path.realpath(xmlfile) for xmlfile in glob.glob('*.xml')
。
答案 1 :(得分:0)
列表推导是这种模式的简写形式:
l = []
for <var> in <val>:
l.append(<expression>)
与列表理解相同:
[<expression> for <var> in <val>]
因此f
中的os.path.realpath(f)
以for f in ...
命名。您可以选择任何您想要的名称。唯一不同寻常的是你似乎在声明变量之前引用变量,但这只是巧合。
答案 2 :(得分:0)
没有
正如您所示, glob.glob
会返回一个列表。该列表的顺序由glob
定义。当您在列表推导中迭代它时,迭代的顺序是列表的顺序。
如果您想知道为什么按顺序返回文件,请查看glob
的结果排序。