列表推导中的这些变量是随机的吗?

时间:2017-12-21 15:30:41

标签: python python-3.x

我从潜水到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来自哪里?它是随机的吗?

3 个答案:

答案 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的结果排序。