Si es posible simplificar el siguiente código.
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)Tratando de dividir todo el conjunto de datos en conjuntos de datos múltiples por clase. El código a continuación es solo un ejemplo que tiene solo 10 clases, pero el conjunto de datos en el que estoy trabajando tiene una gran cantidad de clases, por lo que es necesario simplificarlo lo más posible.
Mejor con una lista:
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)Y las listas contendrán lo que quieras :)
¿Qué tal así?
Use diccionario en lugar de listas anidadas como c0, c1, c2
c = {x:[] for x in range(10)} for i in dataset: c[i[1]].append(i) Si desea agregar otros elementos en el conjunto de datos al c9 como mencionó en su pregunta, entonces
for i in dataset: if 0 <= i[1] <= 8: c[i[1]].append(i) else: c[9].append(i)puedes usarlo.
# 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)