'continue' 'for' 循环到前一个元素
'continue' the 'for' loop to the previous element
我一直在努力寻找一种方法 continue
我的 for
循环到前一个元素。很难解释。
两个说清楚,举个例子:
foo = ["a", "b", "c", "d"]
for bar in foo:
if bar == "c":
foo[foo.index(bar)] = "abc"
continue
print(bar)
在执行此代码时,当循环到达 'c'
时,它会看到 bar
等于 'c'
,它会替换列表中的 'c'
,continue
s 到下一个元素 & 不打印 bar
。当 if
条件为真时,我希望它在替换后循环回到 'b'
。所以它将再次打印 'b'
就像循环从未到达 'c'
背景:我正在做一个项目。如果出现任何错误,我必须从上一个元素继续解决这个错误。
这是流程图,如果对你有帮助的话:
除了我所做的替换之外,我不想修改我现有的列表。我尝试搜索每个不同的关键字,但没有找到类似的结果。
如何继续循环到当前元素的前一个元素?
在 for
循环中,您不能更改迭代器。请改用 while
循环:
foo = ["a", "b", "c", "d"]
i = 0
while i < len(foo):
if foo[i] == "c":
foo[foo.index(foo[i])] = "abc"
i -= 1
continue
print(foo[i])
i += 1
这里当i
对应的值等于c
时元素会变为你的请求并返回一步,重印b
和abc
,最后d
:
foo = ["a", "b", "c", "d"]
i = 0
while i < len(foo):
if foo[i] == "c":
foo[i] = "abc"
i -= 1
continue
print(foo[i])
i += 1
import collections
left, right = -1,1
foo = collections.deque(["a", "b", "c", "d"])
end = foo[-1]
while foo[0] != end:
if foo[0] == 'c':
foo[0] = 'abc'
foo.rotate(right)
else:
print(foo[0])
foo.rotate(left)
print(foo[0])
我想使用 for
所以我自己创建了代码。我不想修改我的原始列表,所以我复制了原始列表
foo = ["a", "b", "c", "d"]
foobar = foo.copy()
for bar in foobar:
if bar == "c":
foobar[foobar.index(bar)] = "abc"
foo[foo.index(bar)] = "abc"
del foobar[foobar.index("abc")+1:]
foobar += foo[foo.index("abc")-1:]
continue
print(bar)
它按预期打印:
a
b
b
abc
d
我原来的列表现在也是:
['a', 'b', 'abc', 'd']
我一直在努力寻找一种方法 continue
我的 for
循环到前一个元素。很难解释。
两个说清楚,举个例子:
foo = ["a", "b", "c", "d"]
for bar in foo:
if bar == "c":
foo[foo.index(bar)] = "abc"
continue
print(bar)
在执行此代码时,当循环到达 'c'
时,它会看到 bar
等于 'c'
,它会替换列表中的 'c'
,continue
s 到下一个元素 & 不打印 bar
。当 if
条件为真时,我希望它在替换后循环回到 'b'
。所以它将再次打印 'b'
就像循环从未到达 'c'
背景:我正在做一个项目。如果出现任何错误,我必须从上一个元素继续解决这个错误。
这是流程图,如果对你有帮助的话:
除了我所做的替换之外,我不想修改我现有的列表。我尝试搜索每个不同的关键字,但没有找到类似的结果。
如何继续循环到当前元素的前一个元素?
在 for
循环中,您不能更改迭代器。请改用 while
循环:
foo = ["a", "b", "c", "d"]
i = 0
while i < len(foo):
if foo[i] == "c":
foo[foo.index(foo[i])] = "abc"
i -= 1
continue
print(foo[i])
i += 1
这里当i
对应的值等于c
时元素会变为你的请求并返回一步,重印b
和abc
,最后d
:
foo = ["a", "b", "c", "d"]
i = 0
while i < len(foo):
if foo[i] == "c":
foo[i] = "abc"
i -= 1
continue
print(foo[i])
i += 1
import collections
left, right = -1,1
foo = collections.deque(["a", "b", "c", "d"])
end = foo[-1]
while foo[0] != end:
if foo[0] == 'c':
foo[0] = 'abc'
foo.rotate(right)
else:
print(foo[0])
foo.rotate(left)
print(foo[0])
我想使用 for
所以我自己创建了代码。我不想修改我的原始列表,所以我复制了原始列表
foo = ["a", "b", "c", "d"]
foobar = foo.copy()
for bar in foobar:
if bar == "c":
foobar[foobar.index(bar)] = "abc"
foo[foo.index(bar)] = "abc"
del foobar[foobar.index("abc")+1:]
foobar += foo[foo.index("abc")-1:]
continue
print(bar)
它按预期打印:
a b b abc d
我原来的列表现在也是:
['a', 'b', 'abc', 'd']