Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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_Python 2.7 - Fatal编程技术网

在python中使用条件迭代子列表中的下一项

在python中使用条件迭代子列表中的下一项,python,python-2.7,Python,Python 2.7,我有一个列表,它是根据子列表的2个元素进行排序和分组的,如下所示 [[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'onli

我有一个列表,它是根据子列表的2个元素进行排序和分组的,如下所示

[[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'online', 1, 30], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15], [2178396, 'c', 'away', 0, 20], [2178402, 'c', 'online', 0,25], [2178408, 'c', 'online', 1, 50]]]
在上面有3个子列表包含这些列表,我想将下一个列表中的第5个元素(第4个索引)添加到子列表中的当前列表中。简单地将下一个子列表的第5个元素(第4个索引)添加到当前子列表中

输出应该是

[[[2178393, 'a', 'online', 0, 20,30], [2178394, 'a', 'away', 0, 30,40], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10,15], [2178390, 'b', 'online', 0, 15,25], [2178392, 'b', 'online', 1, 25,30], [2178391, 'b', 'online', 1, 30,40], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15,20], [2178396, 'c', 'away', 0, 20,25], [2178402, 'c', 'online', 0,25,50], [2178408, 'c', 'online', 1, 50]]]

请帮帮我。

以下是实现该功能的代码

for outer in range(0,len(list)):
  for inner in range(0,len(list[outer])-1):
    list[outer][inner].append(list[outer][inner+1][4])
所需输出


以下是实现该功能的代码

for outer in range(0,len(list)):
  for inner in range(0,len(list[outer])-1):
    list[outer][inner].append(list[outer][inner+1][4])
所需输出


使用嵌套的
列表
理解和
压缩包
。这利用了这样一个事实,即每个最里面的
列表
只需要将下一个
列表
的最后一个元素追加到它,而最后一个最里面的列表保持不变

from itertools import zip_longest

data = [[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'online', 1, 30], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15], [2178396, 'c', 'away', 0, 20], [2178402, 'c', 'online', 0,25], [2178408, 'c', 'online', 1, 50]]]

expected = [[[2178393, 'a', 'online', 0, 20,30], [2178394, 'a', 'away', 0, 30,40], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10,15], [2178390, 'b', 'online', 0, 15,25], [2178392, 'b', 'online', 1, 25,30], [2178391, 'b', 'online', 1, 30,40], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15,20], [2178396, 'c', 'away', 0, 20,25], [2178402, 'c', 'online', 0,25,50], [2178408, 'c', 'online', 1, 50]]]

result = [[bottom_list_first + bottom_list_second[-1:] 
           for bottom_list_first, bottom_list_second 
           in zip_longest(middle_list, middle_list[1:], fillvalue=[])]
          for middle_list in data]

print(result == expected)
输出:

True

使用嵌套的
列表
理解和
zip\u最长
。这利用了这样一个事实,即每个最里面的
列表
只需要将下一个
列表
的最后一个元素追加到它,而最后一个最里面的列表保持不变

from itertools import zip_longest

data = [[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'online', 1, 30], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15], [2178396, 'c', 'away', 0, 20], [2178402, 'c', 'online', 0,25], [2178408, 'c', 'online', 1, 50]]]

expected = [[[2178393, 'a', 'online', 0, 20,30], [2178394, 'a', 'away', 0, 30,40], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10,15], [2178390, 'b', 'online', 0, 15,25], [2178392, 'b', 'online', 1, 25,30], [2178391, 'b', 'online', 1, 30,40], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15,20], [2178396, 'c', 'away', 0, 20,25], [2178402, 'c', 'online', 0,25,50], [2178408, 'c', 'online', 1, 50]]]

result = [[bottom_list_first + bottom_list_second[-1:] 
           for bottom_list_first, bottom_list_second 
           in zip_longest(middle_list, middle_list[1:], fillvalue=[])]
          for middle_list in data]

print(result == expected)
输出:

True

请妥善邮寄。他们的意思是,通过编辑无法理解您所需的输出,请格式化列表,以便我们了解发生了什么。添加一些缩进、一些新行等。然后,请更好地解释你想要实现的目标,然后向我们展示你的尝试。我们没有在这里做作业,请把它贴好。他们的意思是,通过编辑无法理解您所需的输出,请格式化列表,以便我们了解发生了什么。添加一些缩进、一些新行等。然后,请更好地解释你想要实现的目标,然后向我们展示你的尝试。我们这里没有做作业。请不要使用
list
,因为它是一个保留关键字。请不要使用
list
,因为它是一个保留关键字