首页 > 解决方案 > `var = [ ... ]` 在 Python 中有什么作用?

问题描述

在我的 Python 程序中,有人告诉我这个代码片段:

listOfNumbers = input() # (This inputs a space separated list of integers)
listOfNumbers = listOfNumbers.split()

for x in range(0, len(listOfNumbers)):
    listOfNumbers[x] = int(x)

可以用这个单线代替:

listOfValues = [int(x) for x in input().split()]

我是 Python 新手,所以我不知道很多代码缩短技术或方法,所以我开始分析给出的代码段。

我对为什么部分行用方括号括起来感到困惑:[int(x) for x in input().split()]

那段代码的开头和结尾的 and 有什么[作用?]

标签: pythonpython-3.x

解决方案


这就是所谓的列表理解

考虑您要将数字行的前 5 个数字放入列表中。

完整的代码块可以写成:

myList = []
for i in range(1, 6):
    myList.append(i)

这可以在理解中缩短为:

myList = [i for i in range(1, 6)]
myList
>>> [1, 2, 3, 4, 5]

它还有其他应用程序,但它可以用来在上面的较少行中创建一个列表。

如您所见,方括号也存在于主列表中,因此它突出了正在制作列表的事实。

如果您想制作字典,可以更清楚地看到这一点。

myDict = {key: 0 for key in range(1, 6)}
myDict
>>> {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}

推荐阅读