【问题标题】:Get index value in python list comprehension (for in preceded with variable)在 python 列表理解中获取索引值(在前面有变量)
【发布时间】:2021-04-21 14:42:37
【问题描述】:

此语法能够在列表(或数组)之上定义新列表:

[v for v in ['a', 'b']]

但是如何获取列表的索引呢?这不起作用

[k for k, v in ['a', 'b']]

预期输出

[0, 1]

【问题讨论】:

  • 列表中没有键。
  • 列表键是什么意思?
  • 所以用这个语法糖不可能吗?
  • @MitchellOlislagers key = 列表中值的顺序
  • 这能回答你的问题吗? Accessing the index in 'for' loops?

标签: python list for-loop


【解决方案1】:

您可能指的是索引,因为列表中没有键。我们可以这样获取它们:

indexes = [index for index,element in enumerate(your_list)]

但这并不是必须的,我们可以获取列表的长度并从中获取索引,因为索引是从 0 到 [列表长度]-1:

length = len(your_list)
indexes = list(range(length))

【讨论】:

【解决方案2】:
[idx for idx, val in enumerate(['a', 'b'])]

输出

[0, 1]

【讨论】:

  • 请不要使用k, v。列表中没有键和值,OP 已经对此感到困惑。也许改用index, element
  • 它只是索引,因为列表对象中没有键
  • 我假设问这个问题的幸运儿来自另一个编程语言领域
【解决方案3】:
enumerated_list = [(index, value) for index, value in enumerate(['a', 'b'])]
print(enumerated_list)

输出: [(0, 'a'), (1, 'b')]

【讨论】:

  • 无需解压enumerate,只需重新打包即可。就做list(enumerate(['a', 'b']))
【解决方案4】:

我想你的意思是index。请记住,列表没有键,它们是字典。

[index for index, value in enumerate(['a', 'b'])]

enumerate 函数基本上是range,但它返回索引和值。

阅读更多关于enumeratehere

【讨论】:

    【解决方案5】:

    你可以使用range():

    range(len(['a', 'b']))
    

    range() 将返回 sequence。如果你特别需要一个列表,你可以这样做

    list(range(len(['a', 'b'])))
    

    如 cmets 中所述,python 列表中没有键。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 2019-06-06
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多