Я пытаюсь назначить классы списку узлов и отделить все узлы от отдельных списков на основе тега класса. Например, если мы имеем следующий код:Уменьшение размеров списка в Python
#define number of classes
MaxC=5
index=[4 4 5 1 4 1 4 5 4 4 3 1 3 3 1 1]
def indices(index,func):
return[v for (v,val) in enumerate(index) if func(val)]
##Create node classes
nodeclass=[[],[],[],[],[],[],[],[],[],[]]
for k in range(0,MaxC):
nodeindex=indices(index, lambda p:p==k)
nodeclass[k].append([nodeindex])
Тогда мы получим список списков, соответствующих места индексных узлов для каждого класса:
[[[[]]] [[[3, 5, 11, 14, 15]]] [[[]]] [[[10, 12, 13]]]
[[[0, 1, 4, 6, 8, 9]]] [] [] [] [] []]
Однако этот результат дает списки в списках по спискам в списках. Это становится проблемой позже в моем скрипте, когда я хочу перебирать узлы индекса узла, но получаю возвращенные ошибки, потому что итератор получает список, а не отдельные элементы.
TL; DR: Есть ли способ, который я могу более эффективно генерировать эти расположения индексов, чтобы я не получал список списков? В худшем случае, если это не представляется возможным, как сглаживаются список в виде:
[[],[3,5,11,14,15],[],[10,12,13],[0,1,4,6,8,9],[],[],[],[]]
Может ли это быть полезным? http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python или это: http://stackoverflow.com/questions/952914/making-a-flat-list- out-of-list-of-lists-in-python –
Что это? 'Индекс = [4. 4. 5. 1. 4. 1. 4. 5. 4. 4. 3. 1. 3. 3. 1. 1.] '? Это не правильный Python. –
@ReutSharabani Исправлено. Я скопировал показание с моего терминала iPython и забыл стереть периоды. –