【问题标题】:Index of \n in Python listPython 列表中 \n 的索引
【发布时间】:2012-08-09 12:32:43
【问题描述】:

好的,我还有一个问题,我需要在我的列表中单独找到\n的位置。

list = ['abc', '\n', 'def', 'ghi', '\n', 'jkl']

所以,我需要从这个列表中获取所有 '\n' 条目的位置。

我用过

a=list.index('\n')

但只有一个值为“1”。如何获得两个位置?

例如我会得到一个位置为'\n'的列表

位置 = ['1', '4']

'1'代表\n在list中的第一个位置,'4'代表第二个在list中的第四个位置。

【问题讨论】:

  • 请不要将变量命名为list,因为这会影响内置的list,这通常是一件坏事。

标签: python list indexing


【解决方案1】:

您需要遍历元素。这可以通过使用列表理解和enumerate 作为索引轻松完成:

indexes = [i for i, val in enumerate(list) if val == '\n']

演示:

>>> lst = ['abc', '\n', 'def', 'ghi', '\n', 'jkl']
>>> [i for i, val in enumerate(lst) if val == '\n']
[1, 4]

【讨论】:

    【解决方案2】:
    [i for i, x in enumerate(l) if x == "\n"]
    # => [1, 4]
    

    并且不要调用列表list,因为这是一个内置函数。

    【讨论】:

      【解决方案3】:

      要在列表中查找多次出现的项目的索引,下面的代码应该可以工作

      print [i for i in range(len(list)) if list[i] == '\n']
      

      这里我使用了list,因为它是在您的问题中使用的,但不要使用关键字作为变量。

      【讨论】:

      • 这可行,但您不觉得使用enumerate() 的答案看起来更好吗?
      • @gnibbler 是的,枚举绝对是一个很好的解决方案。我只是给出了一种不同的方法来解决这个问题,我想这也是一个很好的解决方案。
      • enumerate 的定义看起来一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2021-11-25
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      相关资源
      最近更新 更多