从列表Python列表中删除列表

Muz*_*uzz 4 python numpy list

我有一份清单清单:

[[0.0,3.3, 4.9, 7.5], [4, 6, 90, 21, 21.1], [3, 43, 99, 909, 2.11, 76, 76.9, 1000]]
Run Code Online (Sandbox Code Playgroud)

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

例如; 范围= 3,15

因此,如果子列表包含-69,-17,0,1,2,15.1,26.99,即任何超出该范围的元素,我希望删除该子列表.

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

[[6, 5, 7, 13, 12], [4, 6, 10], [9, 9, 4, 5, 11], [4, 4]]
Run Code Online (Sandbox Code Playgroud)

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

从列表列表中删除子列表

Python - 从列表列表中删除列表(与.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)
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: 'list' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)

She*_*ore 9

您可以使用列表理解.这是一个输入和输出示例.这个想法很简单:对于每个子表只是检查了minmax他们是否落入期望的范围之外.

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]]
Run Code Online (Sandbox Code Playgroud)