【问题标题】:How multiple variables work in for loop in python with enumerate?python中的多个变量如何在带有枚举的for循环中工作?
【发布时间】:2019-06-27 17:31:07
【问题描述】:

我想访问可迭代对象的每个元素的索引。我在互联网上发现可以使用 enumerate 函数来生成具有与相应元素关联的索引的元组。但是我有一个困惑,python怎么知道我在for循环中选择的哪个变量被分配了索引,哪个变量被分配了元素的实际值?

我知道这不仅仅是枚举函数的问题。它是与 for 循环本身相关的东西,我想了解它是如何工作的。这是一个例子:

for idx, val in enumerate(items):
    print("index is:"+str(idx)+" and value is:"+str(val))

python如何决定“idx”获取元组元素中两部分的索引值,“val”获取实际值部分?

是不是像 "var1,var2" 中左边的那个获取索引?

我们是否可以让“val”获取索引而“idx”获取实际值而不改变它们在“for idx,val in enumerate(items)”中的出现顺序

【问题讨论】:

  • 查找元组解包。这是因为 enumerate 返回位置元组(元组中的第一个元素是索引,第二个元素是值)。所以它将第一个值解压到idx,第二个值解压到val。交换你的变量,你会看到这个。
  • 我们是否可以让“val”获取索引而“idx”获取实际值而不改变它们在“for idx,val in enumerate(items)”中的出现顺序 你确定可以,但为什么呢? 编辑:这是一种方法,但完全没用:for idx, val in map(reversed, enumerate(items))。不要这样做。如果你想让val得到索引,改变变量的顺序。
  • 尝试在 shell a,b = (5,2) 中进行操作。它的工作原理几乎相同
  • @pault 我问只是因为我想知道是否有办法。我知道切换两者显然是不直观的。感谢您的帮助!!!

标签: python python-3.x


【解决方案1】:

它的元组拆包,基本形式是:

x, y = 2, 3
print(x, y) # Prints: 2 3

enumerate 调用只是将索引作为第一个元素返回,将值作为第二个元素返回:

a = ['a', 'b', 'c']
for index, val in enumerate(a):
    print(index, val) # Outputs 0 a --> 1 b --> 2 c

命名随意:

a = ['a', 'b', 'c']
for b, c in enumerate(a):
    print(b, c) # Outputs 0 a --> 1 b --> 2 c

您也可以通过以下方式查看:

a = ['a', 'b', 'c']
for tup in enumerate(a):
    print(tup) # Outputs: (0, a) --> (1, b) --> (2, c)

【讨论】:

  • 我最终陷入语法悔恨是不是很糟糕?我是初学者。
猜你喜欢
  • 2021-08-24
  • 2012-10-20
  • 2019-06-26
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多