【问题标题】:Python how to make a list out of all the indexes with a certain value from another listPython如何从另一个列表中的具有特定值的所有索引中创建一个列表
【发布时间】:2020-05-07 00:22:28
【问题描述】:
my_list = ["1", "2", "X", "2", "4", "6", "X"]

def function1(arg1):
    if arg1 == "Y": 
        return False
    else:
        return True

我需要创建一个新列表,其中包含 list_ 的所有索引位置,这些位置的值为“X”并且通过 function1 为 True。

我知道这个功能是不合逻辑的,为了这个问题我简化了一切。 谢谢!

【问题讨论】:

  • 对于您的function1,没有任何值X 将是True
  • 到底是什么问题?这似乎有点笼统,您实际上尝试过什么吗?

标签: python python-3.x list arraylist indexing


【解决方案1】:

如果我正确理解您的问题:

你想获取数组中匹配某个值的所有元素的索引

这个列表理解应该这样做:

my_list = ["1", "2", "X", "2", "4", "6", "X"]

my_new_list = [x for x in range(len(my_list)) if my_list[x] == "X"]

【讨论】:

    【解决方案2】:

    列表推导式可以在迭代和使用 if 检查条件时构建列表。

    new_list = [i for i, arg in enumerate(my_list) if arg == 'X' and function1(arg)]
    

    【讨论】:

      【解决方案3】:

      这是我的做法,(可能有更好的方法)

      # creating a list of the indexes in my_list with "X" values:
      list1 = [n for n, i in enumerate(my_list) if i == "X"]
      
      # creating a list of the indexes of list1 which are True in function1
      list2 = [n for n, i in enumerate(list1) if function1(i)]
      
      # creating the final list with the original indexes from my_list of the "X" values that are True from function1
      list3 = [list1[i] for i in list2]
      

      【讨论】:

        猜你喜欢
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-08
        • 1970-01-01
        相关资源
        最近更新 更多