Python-删除同一索引下的几个子列表的元素

时间:2019-06-27 20:11:27

标签: python list indexing

我正在为自己正在研究的实验室开发一种用于分析生物学数据的算法,但是我感觉有些棘手。这个想法是比较来自单个csv文件的包含相同类型数据的几种体验。

我正在根据sublist中元素的值之一过滤列表列表(这也是长度为3的列表),我不知道有多少sublist个组成我的主列表的长度都没有(千),但是我想删除所有它们中的第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]]]

我不太习惯numpypandas

我尝试使用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 :(得分:0)

这篇文章还不太清楚,但是从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]]]

注意:由于未提供abc等,我用0代替了

这可能并不是您想要的,但我认为它至少应该使您走上正确的路!