Python - Удалить элементы нескольких подсписков в одном индексе - PullRequest
1 голос
/ 27 июня 2019

Я разрабатываю алгоритм для анализа биологических данных для лаборатории, в которой я работаю, но я чувствую себя застрявшим в какой-то момент. Идея состоит в том, чтобы сравнить несколько событий, содержащих данные одного и того же типа, из одного файла csv.

Я фильтрую список списков в зависимости от одного из значений в элементе в sublist (которые также являются списком длины 3), я не знаю, сколько sublist s составляют мой основной список ни их длины (тысяч), но я хочу удалить i -й элемент во всех них. (У меня есть список индекса)

Пример может быть более объяснительным.

Вот мой список списков списка (с известной длиной), мой "список индексов"

mainlist=[[[a,1,1,5],[b,2,1,50],[c,3,1,5]],[[alph,1,2,5],[bet,2,2,50],[gam,3,2,5]]] 
indextodelete=[1] (where the 4rth element is > 10)

Я пытаюсь получить следующий вывод

out=[[[a,1,1],[c,3,1]],[[alph,1,2],[gam,3,2]]]

Я не очень привык к numpy или pandas.

Я попытался использовать pop(), или перевернул свои списки, потому что у меня есть много элементов для удаления, и у меня уже есть мой индексный список. Здесь npa - мой основной список, а pval - порог, заданный пользователем.

for i,l in enumerate(npa):
    for l,k in reversed(list(enumerate(l))):
        if float(k)>float(pval):
            npa[0:len(npa)][l].pop()

1 Ответ

0 голосов
/ 28 июня 2019

Этот пост не совсем понятен, но чтобы получить от A -> B этот пример, я бы запустил:

main_list = [
    [[0, 1, 1, 5], [0, 2, 1, 50], [0, 3, 1, 5]],
    [[0, 1, 2, 5], [0, 2, 2, 50], [0, 3, 2, 5]]
]
index_to_delete = 1
for sub_list in main_list:
    del sub_list[index_to_delete]
    for smallest_list in sub_list:
        smallest_list.pop()
print(main_list)

С выводом, который соответствует указанному вами:

[[[0, 1, 1], [0, 3, 1]], [[0, 1, 2], [0, 3, 2]]]

Примечание: я заменил 0 на a, b, c и т. Д., Поскольку они не были предоставлены

Возможно, это не совсем то, что вы искали, но я думаю, что это должно поставить вас направильный путь хотя бы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...