[英]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.