有一个格式问题,我想要一些额外的见解/理解。我有以下代码:
In[1]:
mylist = [[99]]
for [x] in mylist:
print(x)
Out[1]:
99
我的主要问题是关于第二行中 x 周围的 []。因此,在描述循环的“x”变量时,我之前从未使用过 []。因为我的输出是 99 而不是 [99],所以看起来 [] 将要求循环从其额外的一组括号中提取数字。
根据回复更新问题:
如果我更改代码以删除括号:
In[1]:
mylist = [[99]]
for x in mylist:
print(x)
Out[1]:
[99]
我得到的是 [99] 而不是 99。但是,如果我执行以下操作:
In[1]:
mylist = [[99,100]]
for x,y in mylist:
print(x)
print(y)
Out[1]:
99
100
上面的这个例子不需要围绕 x,y 的一组额外的 [] 并且在输出中产生一个无括号的答案,这与前两个例子不同,前两个例子需要一个 [] 来产生一个无括号的答案.
我意识到这是一个奇怪且相当愚蠢的问题,因为我永远不会像这样构建单个元素列表。我只是看到它在网上其他地方的答案中被随意使用(不幸的是没有解释)。作为一名新手,我只是想拓宽我对这门语言的理解。
提前致谢。
最佳答案
当你这样做时:
>>> myList = [[99]]
>>> for x in myList:
print x
Python 将其解释为“打印此可迭代对象中的每个元素”。
当你这样做时:
>>> myList = [[99,100], [99,101], [99, 102]]
>>> for x in myList:
print x
Python 仍然 将其解释为“打印此可迭代对象中的每个元素”,以便您得到:
[99, 100]
[99, 101]
[99, 102]
但是,如果你这样做:
>>> myList = [[99,100], [99,101], [99, 102]]
>>> for x, y in myList:
print x, y
Python 会为您从 iterable 中的每个元素中“解压”值,并将它们分配给 x
和 y
。如果你只想对 myList = [[99]]
的情况执行上述操作,Python 需要 for [x] in myList
语法,以便它解压缩单个列表中的值。
“解压”可迭代对象的能力在 Python 中非常强大。您可以通过解包可迭代对象来动态分配变量。在您的情况下,您可以想象必须将 lat
lon
分配为变量或其他变量。您还可以将值解包到函数的参数中。
在 Python 3 中你也可以这样做:
x = [1,2,3,4]
first, *rest = x
print (first) # 1
print (rest) # [2,3,4]
关于python - 在 python 中使用括号进行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52770220/