【发布时间】:2018-03-13 02:13:29
【问题描述】:
目前我正在查看如下列表: [[x, y, z], [x1, y1, z1], [x2, y2, z2]...]
我想循环比较 x1 和 x2 以及 y1 和 y2,如果两者相等,我想将 z2 的值添加到 z1 并将它们添加到一个新列表中。
if x1 == x2 and y1 == y2:
list.append(x1, y1, z1+z2)
但是我需要它是连续的,这样如果 x3 和 y3 也等于 x2 和 y2 那么它们将像以前一样被添加到一起,并且仅在 x 和 y 的下一个值为 no 时才添加到新列表中更长的时间等于现在的。
实际上,如果一个链
x1 == x2 == x3 == x4 and y1 == y2 == y3 == y4 评估为真,那么新列表应该只包含一个条目 [x, y, z1 + z2 + z3 + z4]
到目前为止,我已经在 for 循环(和列表理解)中尝试了一个递归函数,但是我遇到了各种各样的问题,我不知道人们通常是如何做这种事情的。
期望的输出:
[[x1, y1, z1+z2+z3+z4], [x5, y5, z5], [x6, y6, z6+z7]...]
到目前为止我的代码(有点乱。我在中途感到沮丧并尝试更改很多代码。):
list = [function(oldList, i) for i in range(len(oldList))]
def isNextElementEqual(list, index, totalTimeSpent = 0, count = 0):
if list[index][2] == list[index + 1][2] and list[index][0] == list[index+1][0] and index+1 < len(list):
totalTimeSpent += list[index][1]
count += 1
isNextElementEqual(list, index + 1, totalTimeSpent, count)
elif count > 0:
return [list[index][0], totalTimeSpent, list[index][2]]
【问题讨论】:
-
你能告诉我们你到目前为止做了什么吗?没有您尝试过的证明,我们不能只为您工作
-
请发布您想要的输出。
-
好的,我马上编辑帖子。
-
如果 y1=y2,但 x1 != x2 怎么办?
-
如果 x1 != x2,我不需要将任何数据添加到新列表中,因此不会返回。
标签: python python-3.x list loops for-loop