繁体   English   中英

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

[英]Python - Delete elements of several sublists at the same index

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

我根据sublist元素的值之一过滤列表的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()

这篇文章还不是很清楚,但是要从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代替abc等,因为未提供这些

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM