python 中的嵌套 For 循环在第一个循环的迭代器处开始第二个循环
Nested For loop in python which starts second loop at the iterator of the first loop
我需要在第一个循环的迭代器进入第二个循环的入口处开始第二个 python 循环
目前两个循环运行整个范围
很遗憾我不明白这个语法
示例中的完整代码在这里:https://gist.github.com/kylemcdonald/c8e62ef8cb9515d64df4
for i, (start1, stop1) in enumerate(zip(starts, stops)):
audio1 = y[start1:stop1]
for j, (start2, stop2) in enumerate(zip(starts, stops)):
audio2 = y[start2:stop2]
我试过改成
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 argument #1 must support iteration
我也尝试了在 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 的当前迭代器之后的迭代器开始,直到循环结束
所以没有重复比较,没有2个相同的音频样本相互比较
谢谢,
下面是一些示例代码:
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 的当前值开始/停止迭代。
我去掉了第二个枚举,至于你的问题不需要生成索引。
我需要在第一个循环的迭代器进入第二个循环的入口处开始第二个 python 循环
目前两个循环运行整个范围
很遗憾我不明白这个语法
示例中的完整代码在这里:https://gist.github.com/kylemcdonald/c8e62ef8cb9515d64df4
for i, (start1, stop1) in enumerate(zip(starts, stops)):
audio1 = y[start1:stop1]
for j, (start2, stop2) in enumerate(zip(starts, stops)):
audio2 = y[start2:stop2]
我试过改成
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 argument #1 must support iteration
我也尝试了在 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 的当前迭代器之后的迭代器开始,直到循环结束
所以没有重复比较,没有2个相同的音频样本相互比较
谢谢,
下面是一些示例代码:
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 的当前值开始/停止迭代。 我去掉了第二个枚举,至于你的问题不需要生成索引。