簡體   English   中英

Python - 可以簡化多個 if 條件和 append

[英]Python - Can Multiple if-condition and append be simplified

如果可以簡化下面的代碼。

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 個類,但是我正在處理的數據集有大量的類,所以需要盡可能地簡化。

最好有一個列表:

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)

列表將包含您想要的內容:)

這樣怎么樣?

使用字典而不是嵌套列表,如c0, c1, c2

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

如果您想像問題中提到的那樣將數據集中的 append 其他項目添加到c9 ,那么

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

你可以使用它。

# 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM