Python 列表理解中的这些变量是随机的吗?
我在《深入python 3》一书中学习python,但他们并没有解释列表理解中的变量是随机的还是非随机的。下面是在python shell中运行的示例: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')]
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。g
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
,而不是值。