Python 列表理解中的这些变量是随机的吗?

Python 列表理解中的这些变量是随机的吗?,python,python-3.x,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')]

我在《深入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来自哪里?这是随机的吗?

我想你是想问他们是否武断。是的,在这里你可以用任何名字来代替f,e。gos.path.realpath(xmlfile)

列表理解是此模式的简写形式:

l = []
for <var> in <val>:
    l.append(<expression>)
l=[]
例如:
l、 附加()
与列表理解相同:

[<expression> for <var> in <val>]
[适用于中]
因此
os.path.realpath(f)
中的
f
被命名为
中的f…
。你可以选择任何你想要的名字。唯一不寻常的是,您似乎在声明变量之前引用了它,但这只是巧合。

glob.glob
,如您所示,返回一个列表。该列表的顺序由
glob
定义。当您在列表理解中迭代它时,迭代的顺序就是列表的顺序


如果您想知道为什么要按文件的顺序返回文件,请查看
glob

glob.glob()
在当前目录下操作的结果顺序。此命令从中获取所有
*.xml
文件。很少有随机性的东西,当有随机性的时候,它很可能会被明确地提到。你说的“随机性”是什么意思?你的意思是“作者决定如何称呼它?我们无法真正回答这个问题——我猜是因为它将是一个表示文件位置的字符串,但您必须询问他们。如果你的意思是“它定义在哪里?”,那么这在
中表示f,与
循环的普通
完全相同。局部变量
f
的名称是任意的(即,你可以选择任何有效的标识符)。这很有希望,也可能不是随机的。只是想说得更详细一些:你从许多程序员那里得到了一种近乎本能的情绪反应。一般来说,我们不喜欢随机性——事实上,我们会说在计算中没有随机性。计算机所做的唯一事情就是我们告诉它什么,最后,我们知道有一些1和0是我们造成的,它们控制着计算机。即使随机数生成器也不是随机的,它们是伪随机的。正如其他人所说,你希望这个词是任意的——取决于个人。当你成长为一名程序员时,你会发现我们重视语言的精确性。:-)他的问题是关于变量
f
,而不是值。