【问题标题】:Python - Can Multiple if-condition and append be simplifiedPython - 可以简化多个 if-condition 和 append
【发布时间】:2021-09-29 06:44:52
【问题描述】:

如果可以简化以下代码。

c0, c1, c2, c3, c4, c5, c6, c7, c8, c9 = ([] for _ in range(10))
  
  for i in dataset:
    if i[1] == 0:
      c0.append(i)
    elif i[1] == 1:
      c1.append(i)
    elif i[1] == 2:
      c2.append(i)
    elif i[1] == 3:
      c3.append(i)
    elif i[1] == 4:
      c4.append(i)
    elif i[1] == 5:
      c5.append(i)
    elif i[1] == 6:
      c6.append(i)
    elif i[1] == 7:
      c7.append(i)
    elif i[1] == 8:
      c8.append(i)
    else:
      c9.append(i)

尝试将整个数据集划分为按类别划分的多个数据集。下面的代码只是一个例子,它只有 10 个类,但是我正在处理的数据集有大量的类,所以需要尽可能简化。

【问题讨论】:

    标签: python python-3.x list if-statement


    【解决方案1】:

    列表更好:

    lsts = [c0, c1, c2, c3, c4, c5, c6, c7, c8]
    for i in dataset:
        if i[1] < len(lsts):
            lsts[i[1]].append(i)
        else:
            c9.append(i)
    

    列表将包含您想要的内容:)

    【讨论】:

    • 请注意,在 OPs 代码中,else 包含所有不是 0-8 的数字,例如,如果存在 'i[1] == 13',您的将失败。
    • @ChristianSloper 已编辑
    • 非常感谢。尚未申请,但它似乎是一个更省时的代码
    • 仍然不正确 if i
    • @ChristianSloper 对不起!错过了
    【解决方案2】:

    这样怎么样?

    使用字典而不是像c0, c1, c2这样的嵌套列表

    c = {x:[] for x in range(10)}
      
    for i in dataset:
        c[i[1]].append(i)
    

    如果您想将数据集中的其他项目附加到c9,就像您在问题中提到的那样,那么

    for i in dataset:
        if 0 <= i[1] <= 8:
            c[i[1]].append(i)
        else:
            c[9].append(i)
    

    【讨论】:

      【解决方案3】:

      你可以使用它。

      # if you need cX as var
      c0, c1, c2, c3, c4, c5, c6, c7, c8, c9 = ([] for _ in range(10))
      database = {0: c0,
                  1: c1,
                  2: c2,
                  ...,
                  9: c9}
      
      # else
      database = {i: [] for i in range(10)}
      
      for i in dataset:
          if i[1] in dataset:
              database[i].append(i)
          else:
              database[9].append(i)
      

      【讨论】:

      • 您的解决方案不正确。
      • OP 除以索引 1 而不是 0。你的条件是错误的1 in [[1,0],[2,0]]False
      • 请告诉我问题出在哪里,让我改正。
      • 哦好的我编辑它
      • database[i] 仍然不正确。
      猜你喜欢
      • 1970-01-01
      • 2013-11-18
      • 2023-03-19
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      相关资源
      最近更新 更多