我正在为自己正在研究的实验室开发一种用于分析生物学数据的算法,但是我感觉有些棘手。这个想法是比较来自单个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]]]
我不太习惯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()
答案 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]]]
注意:由于未提供a
,b
,c
等,我用0代替了
这可能并不是您想要的,但我认为它至少应该使您走上正确的路!