Python 如何根据给定的输入创建列表列表?
我有一个输入列表Python 如何根据给定的输入创建列表列表?,python,list,numpy,Python,List,Numpy,我有一个输入列表 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]
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,我将创建一个新列表。所以我有一个列表的多个列表。
第二个值的平均值。您可以创建一个列表,这比动态创建新的列表名要好 大概是这样的:
input_list = [[278, 207], [695, 205], [672, 205], [325, 205], [302, 205],[650, 167], [556, 167], [533, 167]]
output_list = [[input_list[0]]] # Create an output list, with the first element of input_list as a list of lists.
x = 0
for i in range(1, len(input_list)):
if abs(input_list[i-1][1]- input_list[i][1]) > 2: # Check if absolute difference > 2
x += 1
output_list.append([]) # Create new sublist
output_list[x].append(input_list[i]) # append sublist to output_list
print(output_list)
当方法:
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]
你试过什么吗?所以不是家庭作业服务。您的输出为
[278207]
创建了一个单独的子列表。这不是要求的(差异>2)。@NielsHenkens感谢您的纠正。解决方案更新
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]
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]]]