我有一个输入列表
input_list = [[278, 207], [695, 205], [672, 205], [325, 205], [302, 205],[650, 167], [556, 167], [533, 167]]
我需要像这两个输出列表
output_list_1 = [[278, 205], [695, 205], [672, 205], [325, 205], [302,205]]
output_list_2 = [[650, 167], [556, 167], [533, 167]]
我想比较每个子列表的所有第二个值,如果它们之间的差大于2,则创建一个新列表。所以我有一个列表的多个列表。 所有第二个值都取平均值。
答案 0 :(得分:2)
您可以创建一个列表列表,这比动态创建新列表名称要好。
类似这样的东西:
lightGallery(document.getElementById('lightgallery'));
答案 1 :(得分:0)
dic={}
input_list = [[278, 207], [695, 205], [672, 205], [325, 205], [302, 205],[650, 167], [556, 167], [533, 167]]
data = list(set([i[1] for i in input_list]))
for i in data :
dic[i]=[]
for i in input_list :
dic[i[1]].append(i[0])
new_l =[]
result =[]
for k,v in dic.items():
for i in v:
new_l.append([i,k])
if len(new_l)>2:
result.append(new_l)
new_l=[]
print(result)
#output [[[650, 167], [556, 167], [533, 167]],[[695, 205], [672, 205], [325, 205], [302, 205]]]
答案 2 :(得分:0)
您可以使用slice_when
方法:
def slice_when(predicate, iterable):
i, x, size = 0, 0, len(iterable)
while i < size-1:
if predicate(iterable[i], iterable[i+1]):
yield iterable[x:i+1]
x = i + 1
i += 1
yield iterable[x:size]
可在您的input_list
上以所需条件(lambda
)调用:
slices = slice_when(lambda x,y: abs(x[1] - y[1]) > 2, input_list)
print(list(slices))
#=> [[[278, 207], [695, 205], [672, 205], [325, 205], [302, 205]], [[650, 167], [556, 167], [533, 167]]]