【问题标题】:Keep track of numbers in a list跟踪列表中的数字
【发布时间】:2020-05-15 02:02:54
【问题描述】:

我有一个很长的数字列表,我有一个 if 语句,它取出大于某个值的数字并将它们放在不同的列表中。我希望能够跟踪原始列表中的 ID,以便我返回并将它们与其他信息相匹配。请参见下面的示例:

test_list = [564, 564748, 654, 89, 567, 98]

large_numbers = []

for i in test_list:
    if i >= 600:
        large_numbers.append(i)

这很好,我得到:

large_numbers = [564748, 654]

但是有什么方法可以为每个人分配一个 ID,以便我知道它在原始列表中的位置。理想情况下,它会输出类似于:

print(ID_of_large_numbers) 

[0,1]

这样我就知道它是原始列表的第一个和第二个元素。 (我的个人列表有几个 100 个元素,我将它从高到低排序成一个 numpy 数组,所以我找不到他们的 ID)。

【问题讨论】:

  • 你的意思是元素索引吗?

标签: python list numpy sorting


【解决方案1】:

您可以像这样在 for 循环中使用 enumerate

for idx,i in enumerate(test_list):
    if i >= 600:
        large_numbers.append(i)
        ID_of_large_numbers.append(idx)

【讨论】:

    【解决方案2】:

    你可以用字典理解来做到这一点:

    test_list = [12, 642]
    large_num_by_original_index = {i: n for i, n in enumerate(test_list) if n >= 600}
    

    这会遍历列表中的每个元素并将其与其索引一起存储在字典中。上面的字典将包含:

    {1: 642}
    

    PS:为结果字典选择一个更好的名称

    【讨论】:

      【解决方案3】:
      test_list = [564, 564748, 654, 89, 567, 98]
      large_numbers = []
      large_numbers_index = []
      for i, e in enumerate(test_list):
          if e >= 600:
              large_numbers.append(e)
              large_numbers_index.append(i)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-27
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2023-03-29
        • 2019-09-08
        • 1970-01-01
        相关资源
        最近更新 更多