python - 在 python 中使用括号进行循环

标签 python

有一个格式问题,我想要一些额外的见解/理解。我有以下代码:

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 中的每个元素中“解压”值,并将它们分配给 xy。如果你只想对 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/

相关文章:

python - Pandas Dataframe.apply() 因提供太多参数而引发类型错误

python - 如何在没有缓存模板的情况下运行 Flask?

python - 如何真正将窗口置于所有窗口之上——Linux PyGTK

python - 如何让 python 中的函数在 2 个列表(每个列表都有自己的 x、y)之间进行插值?

python - 如何使用 Conda 下载 python 包,然后离线安装?

python - 我怎样才能把 000000000001 变成 1?

python - django 6 1.10.0没有名为http_client的模块错误

python - 使用分隔符 1 和索引 [0] 与其他分隔字符串

python - 找出第 20、30、n 个素数。 (我得到第 20 名而不是第 30 名?)[Python]

python - PySpark 中 pandas_udf 的隐式模式?