python中的嵌套For循环,在第一个循环的迭代器处启动第二个循环

python中的嵌套For循环,在第一个循环的迭代器处启动第二个循环,python,librosa,dtw,Python,Librosa,Dtw,我需要让第二个python循环开始,第一个循环的迭代器位于第二个循环的入口 目前,两个循环都运行整个范围 不幸的是,我不懂这个语法 示例中的完整代码如下所示: 我试着换成 for i, (start1, stop1) in enumerate(zip(starts, stops)): audio1 = y[start1:stop1] for j, (start2, stop2) in enumerate(zip(start1, stops)): audio2 =

我需要让第二个python循环开始,第一个循环的迭代器位于第二个循环的入口

目前,两个循环都运行整个范围

不幸的是,我不懂这个语法

示例中的完整代码如下所示:

我试着换成

for i, (start1, stop1) in enumerate(zip(starts, stops)):
    audio1 = y[start1:stop1]

    for j, (start2, stop2) in enumerate(zip(start1, stops)):
        audio2 = y[start2:stop2]
但是我得到了一个错误:
zip参数#1必须支持迭代

我还尝试了用C语言实现的显而易见的方法

for i, (start1, stop1) in enumerate(zip(starts, stops)):
    audio1 = y[start1:stop1]

    for j = i+1, (start2, stop2) in enumerate(zip(start1, stops)):
        audio2 = y[start2:stop2]
但是我得到了错误:
SyntaxError:invalid syntax

我不是python程序员,请帮助我理解并修复这个复杂的语法,以便loop2从循环1的当前迭代器之后的迭代器开始,并到达循环的末尾

因此,没有重复比较,也没有两个相同的音频样本相互比较


谢谢,

以下是一些示例代码:

a = [1,2,3,4,5]
b = [10,20,30,40,50]

for i, (a1, b1) in enumerate(zip(a, b)):
    for j, (a2, b2) in enumerate(zip(a[i+1:],b[i+1:])):
        print(a1,b1,a2,b2)
结果:

1 10 2 20
1 10 3 30
1 10 4 40
1 10 5 50
2 20 3 30
2 20 4 40
2 20 5 50
3 30 4 40
3 30 5 50
4 40 5 50

下面是一些示例代码:

a = [1,2,3,4,5]
b = [10,20,30,40,50]

for i, (a1, b1) in enumerate(zip(a, b)):
    for j, (a2, b2) in enumerate(zip(a[i+1:],b[i+1:])):
        print(a1,b1,a2,b2)
结果:

1 10 2 20
1 10 3 30
1 10 4 40
1 10 5 50
2 20 3 30
2 20 4 40
2 20 5 50
3 30 4 40
3 30 5 50
4 40 5 50

这可能是您想要的:

for i, (start1, stop1) in enumerate(zip(starts, stops)):
    audio1 = y[start1:stop1]

    for start2, stop2 in zip(starts[i+1:], stops[i+1:]):
        audio2 = y[start2:stop2]
它从i的当前值开始/停止。
我删除了第二个枚举,至于您的问题,您不需要生成索引。

这可能就是您想要的:

for i, (start1, stop1) in enumerate(zip(starts, stops)):
    audio1 = y[start1:stop1]

    for start2, stop2 in zip(starts[i+1:], stops[i+1:]):
        audio2 = y[start2:stop2]
它从i的当前值开始/停止。
我删除了第二个枚举,因为您的问题不需要生成索引。

zip(开始[I+1:],停止[I+1:])
zip(开始[I+1:],停止[I+1:])
?请注意,当您在片上使用
enumerate()
时,索引从
0
开始,不在切片的起始索引处。请注意,在切片上使用
enumerate()
时,索引从
0
开始,而不是从切片的起始索引开始。