Python For Loop using List—尝试根据循环中使用的最后一个数字对数字对进行分组

Python For Loop using List—尝试根据循环中使用的最后一个数字对数字对进行分组,python,Python,从列表开始: l = [0,1,2,3,6,7,8,9] 试图产生: nl [[0, 1], [1, 2], [2, 3], [6, 7], [7, 8], [8, 9]] 使用for循环,我试图遍历列表,并使用前面的数字作为比较来创建一个集群组,重叠的组多次使用数字。它不起作用,我也不知道为什么。一旦到达6,它将停止添加到列表中 *编辑:是,仅分组数字序列对,1,2,3等,跳过3,6 测试代码: l = [0,1,2,3,6,7,8,9] nl = [] lastN = 0 for i

从列表开始:

l = [0,1,2,3,6,7,8,9]
试图产生:

nl [[0, 1], [1, 2], [2, 3], [6, 7], [7, 8], [8, 9]]

使用for循环,我试图遍历列表,并使用前面的数字作为比较来创建一个集群组,重叠的组多次使用数字。它不起作用,我也不知道为什么。一旦到达6,它将停止添加到列表中

*编辑:是,仅分组数字序列对,1,2,3等,跳过3,6

测试代码:

l = [0,1,2,3,6,7,8,9]
nl = []
lastN = 0

for i in range(1,len(l)):
    lastN = l[i - 1]

    if i - lastN == 1:
        nl.append([lastN, i])

    print('nl',nl)
这导致:

nl [[0, 1], [1, 2], [2, 3], [3, 4]]
我的目标是:

nl [[0, 1], [1, 2], [2, 3], [6, 7], [7, 8], [8, 9]]
试试这个:

返回:

nl [[0, 1], [1, 2], [2, 3], [6, 7], [7, 8], [8, 9]]

这是一种简单的方法:

l = [0, 1, 2, 3, 6, 7, 8, 9]
nl = []
for i1, i2 in zip(l, l[1:]):
    if i1 + 1 == i2:
        nl.append((i1, i2))
print(nl)
# [(0, 1), (1, 2), (2, 3), (6, 7), (7, 8), (8, 9)]
尝试:


在比较和赋值中,您需要使用
l[i]
而不是
i
,如下所示:

l = [0,1,2,3,6,7,8,9]
nl = []

for i in range(1, len(l)):
    lastN = l[i - 1]

    if l[i] - lastN == 1:
        nl.append([lastN, l[i]])

print('nl',nl)
# nl [[0, 1], [1, 2], [2, 3], [6, 7], [7, 8], [8, 9]]
您的代码以前部分工作过,因为前几个条目的
l[i]
i
相同


如果您使用
l[i-1]
而不是
lastN
或分配
nextN=l[i]
然后使用
l[i]
而不是
l[i]
,代码的可读性会更高,更不容易出现错误。或者,您可以在中使用更简单的列表理解方法。但这可以识别代码中的特定错误。

作为一个单行列表:

l = [0, 1, 2, 3, 6, 7, 8, 9]
nl = [[a, b] for a, b in zip(l, l[1:]) if b - a == 1]
或者扩展成for循环

nl = []
for a, b in zip(l, l[1:]):
     if b - a == 1:
         nl.append([a, b])

你的意思是要从结果中排除[3,6]吗?@PaulBrown是的,我很确定只有按顺序排列的数字对应该被打印“它不起作用,我也不知道为什么。一旦它到达6,它就停止添加到列表中。”-因为当I=5时,lastN=l[5-1]),这是索引为4的元素,索引为6。(列表索引从0开始)。因此“if语句”:5-6=-1,这是错误的。@PaulBrown-Yes,[3,6]被排除在外。(卢萨克)-让我困惑的是,为什么它在达到差距时才停止加入名单。我想它会跳过它,继续前进。谢谢你的解释。这里是python新手,使用变量。
l = [0, 1, 2, 3, 6, 7, 8, 9]
nl = [[a, b] for a, b in zip(l, l[1:]) if b - a == 1]
nl = []
for a, b in zip(l, l[1:]):
     if b - a == 1:
         nl.append([a, b])