我有一份清单清单:
[[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,26.99,即任何超出该范围的元素,我希望删除该子列表.
应返回的输出是列表列表,其中所有子列表仅包含该范围内的值:
[[6, 5, 7, 13, 12], [4, 6, 10], [9, 9, 4, 5, 11], [4, 4]]
我知道这里有类似的问题,例如:
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)
错误:
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]]