用 'enumerate' 解释定义列表
Defining list with 'enumerate' explanation
我遇到了这段有用的代码,returns 列表 l
的最小值的索引
[i for i, x in enumerate(l) if x == min(l)]
谁能帮我解释一下这种创建列表的方式是什么and/or这个过程是什么?
我熟悉 [i*2 for i in l]
类型代码,但我不熟悉逗号的作用以及定义新变量 x 的原因是什么。
非常感谢
enumerate 函数 returns 一个大小为 2 的元组,第一个是索引,第二个是列表中该索引处的元素。我们可以将元组分配给以下形式的多个变量:
>>> i, v = (1, 2)
>>> i
1
>>> v
2
因此在您的示例中,它遍历列表,并针对列表中的每个索引和值检查该值是否等于列表中的最小值。如果是这样,它将 i
附加到列表推导中。
当然,列表理解等于:
[l.index(min(l))]
枚举 returns 一个元组索引,列表 l 的元素,你只需告诉 python 每次将元组的第一个元素(索引)分配给 i,并将你的元素分配给 x接下来被调用。
这种创建列表的方法称为"List comprehention",而使用枚举"i, x"中的'i'表示索引号(或序列号,如果你愿意)和x表示迭代在列表中(例如在 list = [1,2,3,4] 中,每个数字都是一次迭代)
因此,当传递代码 [i for i, x in enumerate(l) if x == min(l)] 时,它将创建一个索引列表,该索引自函数 min 以来附加到它的迭代值最少() 被使用。
我遇到了这段有用的代码,returns 列表 l
的最小值的索引[i for i, x in enumerate(l) if x == min(l)]
谁能帮我解释一下这种创建列表的方式是什么and/or这个过程是什么?
我熟悉 [i*2 for i in l]
类型代码,但我不熟悉逗号的作用以及定义新变量 x 的原因是什么。
非常感谢
enumerate 函数 returns 一个大小为 2 的元组,第一个是索引,第二个是列表中该索引处的元素。我们可以将元组分配给以下形式的多个变量:
>>> i, v = (1, 2)
>>> i
1
>>> v
2
因此在您的示例中,它遍历列表,并针对列表中的每个索引和值检查该值是否等于列表中的最小值。如果是这样,它将 i
附加到列表推导中。
当然,列表理解等于:
[l.index(min(l))]
枚举 returns 一个元组索引,列表 l 的元素,你只需告诉 python 每次将元组的第一个元素(索引)分配给 i,并将你的元素分配给 x接下来被调用。
这种创建列表的方法称为"List comprehention",而使用枚举"i, x"中的'i'表示索引号(或序列号,如果你愿意)和x表示迭代在列表中(例如在 list = [1,2,3,4] 中,每个数字都是一次迭代)
因此,当传递代码 [i for i, x in enumerate(l) if x == min(l)] 时,它将创建一个索引列表,该索引自函数 min 以来附加到它的迭代值最少() 被使用。