Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据给定的输入创建列表列表?_Python_List_Numpy - Fatal编程技术网

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]]]