编程自学网编程自学网编程自学网

从列表的Python的列表中删除列表

问题描述:

我有一个列表的列表:


[[0.0,3.3, 4.9, 7.5], [4, 6, 90, 21, 21.1], [3, 43, 99, 909, 2.11, 76, 76.9, 1000]]

我想如果子表包含给定范围外的元素,以从列表中删除子列表。


例如;范围= 3,15


所以,如果一个子列表包含,-69,-17,0,1,2,15.1,246.99,即是该范围之外,我想要的子列表移除的任何元件。


应返回的输出是列出所有的子列表仅包含在该范围内的值的列表:


[[6, 5, 7, 13, 12], [4, 6, 10], [9, 9, 4, 5, 11], [4, 4]]

我知道,在这里也有类似的问题,例如:


Removing sublists from a list of lists


Python - Remove list(s) from list of lists (Similar functionality to .pop() )


我不能让这些解决方案的工作。


我的目标是不删除列表中的重复:有很多的有关问题,但是这不是我的目标。


我的代码:

max_value = 15

min_value = 3


for sublist in my_list:

  for item in sublist:

    if(item < min_value):

        my_list.pop(sublist)

    if(item > max_value):

        my_list.pop(sublist)

print(my_list)


错误:

TypeError: 'list' object cannot be interpreted as an integer

解决方法:

您可以使用列表理解。下面是一个示例输入和输出。这个想法很简单:对于每个子表只是检查了min和max如果它们落入期望的范围之外。

list_1 = [[0.0,3.3, 4.9, 7.5], [4, 6, 9, 11, 12.1], [3, 43, 99, 909, 2.11, 76, 76.9, 1000], ]


left = 3

right = 15


list_2 = [i for i in list_1 if (min(i)>=left and max(i)<=right)]

print (list_2)

# [[4, 6, 9, 11, 12.1]]


未经允许不得转载:编程自学网 » 从列表的Python的列表中删除列表