【问题标题】:What does "for a, b in [(0, 1), (2, 3), (4, 5)]: " mean? Why does it print me this? [duplicate]“for a, b in [(0, 1), (2, 3), (4, 5)]: 是什么意思?为什么它打印我这个? [复制]
【发布时间】:2019-07-09 02:17:54
【问题描述】:

我对一些 for 循环语句感到困惑。我无法弄清楚它到底做了什么。

for a, b in [(0, 1), (2, 3), (4, 5)]:
    print(a)
    print(b)

我不希望有任何输出。

输出是

0
1
2
3
4
5

【问题讨论】:

标签: python loops for-loop


【解决方案1】:

它是元组解包,就像在赋值语句中一样。这是一种更短的写作方式

for t in [(0, 1), (2, 3), (4, 5)]:
    a, b = t
    print(a)
    print(b)

不是将每个元组分配给t,然后将t 解包为ab,而是通过for 循环将每个元组直接解包到ab

【讨论】:

  • 哦。谢谢你。那么为什么“for a, b in [0, 1, 2, 3, 4, 5]: print(a); print(b)”会抛出异常呢? "TypeError: 'int' 对象不可迭代"
  • 出于同样的原因a, b = 0 会抛出同样的错误。您不能在 for 循环中从 iterable 中提取多个项目,并且新示例是整数列表,而不是(可迭代)元组列表。
【解决方案2】:

这意味着:

第 1 步:a, b = (0, 1),所以print(a) 将产生0print(b) 将产生1

第 2 步:a, b = (2, 3),所以print(a) 将产生2print(b) 将产生3

第 3 步:a, b = (4, 5),所以print(a) 将产生4print(b) 将产生5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2018-08-06
    • 2019-12-22
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多