【问题标题】:Check for equal values in lists and set them to 0检查列表中的相等值并将它们设置为 0
【发布时间】:2018-12-21 02:30:43
【问题描述】:

我希望列表 a 中的元素在列表 b 中为零

a = [80,85,140,145]

b = list(range(200))

有没有办法代替手动编写:

b[80]=0

b[140]=0

因为我正在运行模拟,并且列表 a 中的值以及 a 的列表长度总是从一个模拟更改为另一个模拟,我想找到一种方法来自动将列表 a 的值设置为列表 b 中的 0

【问题讨论】:

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


    【解决方案1】:

    为什么不使用列表推导来过滤创建:

    b = [x if x not in a else 0 for x in range(200)]
    

    if x not in a 检查该数字是否应该被过滤,如果要过滤,else 0 会将其设置为零。

    【讨论】:

      【解决方案2】:

      为什么不做一个简单的循环呢?天真的解决方案是执行以下操作:

      a = [8,5,1, 14]
      b = list(range(20))
      i = 0 
      while (i < len(a)):
        b[a[i]] = 0
        i = i+1
      print(b)
      

      【讨论】:

        【解决方案3】:

        如果我正确理解了这个问题,这会将b 中的项目替换为a 中包含的索引处的零:

        for i in a:
            b[i] = 0
        

        【讨论】:

          【解决方案4】:

          您可以为此使用列表推导。

          c = [0 for x in b if x in a]
          

          【讨论】:

            【解决方案5】:

            你可以试试这个:

            for i in b:
                if i in a:
                    b[i]=0
            

            希望这会有所帮助:D

            【讨论】:

              【解决方案6】:

              简单的列表理解对此很有用:

              a = [2, 4]
              b = list(range(10))
              
              [x if x not in a else 0 for x in b]
              ## [0, 1, 0, 3, 0, 5, 6, 7, 8, 9]
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2017-12-02
                • 1970-01-01
                • 1970-01-01
                • 2018-01-08
                • 2020-03-04
                • 2021-11-30
                • 2022-08-19
                相关资源
                最近更新 更多