如何在python循环中使用for
用其他语言如何在python循环中使用for,python,Python,用其他语言 for(i=0; i<10; i++){ if(...){ i = 4; } } 所以我可以用“for”循环吗?一种可能是你想跳过项目。与索引上的循环有关的一切都是丑陋的,但这里有一种方法可以通过while循环来实现这一点 i = 1 while i < 11: if predicate(i): i = 4 i += 1 或者使用生成器表达式筛选项目 for item in (item for item
for(i=0; i<10; i++){
if(...){
i = 4;
}
}
所以我可以用“for”循环吗?一种可能是你想跳过项目。与索引上的循环有关的一切都是丑陋的,但这里有一种方法可以通过while循环来实现这一点
i = 1
while i < 11:
if predicate(i):
i = 4
i += 1
或者使用生成器表达式筛选项目
for item in (item for item in some_list_of_items if predicate(item)):
do_something_with_item(item)
对于这种情况,您可能希望在Python中使用while循环而不是For循环。 例如:
i = 0
while i < 10:
if ...:
i = 4
i=0
当我<10时:
如果…:
i=4
这里的问题是range(1,11)
返回一个列表,并且for…in
迭代列表元素,因此将i
更改为其他内容无法按预期工作。使用while
循环应该可以解决您的问题。Python不允许您内联修改循环变量。如果您希望这样做,您应该执行以下操作
i = 0
while i < 10:
if i == 3:
i = 7
print(i)
i += 1
i=0
当我<10时:
如果i==3:
i=7
印刷品(一)
i+=1
这应该有你想要的效果
您还可以执行以下操作:
for i in range(10):
if 2 < i < 7:
continue
print(i)
范围(10)内的i的:
如果2
两者都有相同的效果。请注意,这只是个坏主意。在for循环中更改迭代变量?在我看来,这相当于一个后进声明 你为什么不问问你想完成什么
- 是否要筛选集合?使用continue语句
- 或者你想重复一些事情更多次?在内部创建一个重复循环
- 您希望以不同的顺序进行迭代吗?我们要事先准备好订单
其他人发布的while循环解决方案是正确的翻译,但这也不是一个好主意。只是一些值得思考的东西 for循环在iterable上循环。创建你自己的iterable,让你自己向前迈进
iterator = iter(range(11))
for i in iterator:
print 'for i = ', i
try:
print 'next()', iterator.next()
except StopIteration:
continue
>>> foo()
for i = 0
next() 1
for i = 2
next() 3
for i = 4
next() 5
for i = 6
next() 7
for i = 8
next() 9
for i = 10
next()
>>>
xrange()是range()的迭代版本
iterable=xrange(11)的行为类似于迭代器
itertools提供了dropwhile之类的功能
这可以为您继续使用迭代器
from itertools import dropwhile
iterator = iter(range(11))
for i in iterator:
if i == 3:
i = dropwhile(lambda x: x<8, iterator).next()
print 'i = ', i
>>> foo()
i = 0
i = 1
i = 2
i = 8
i = 9
i = 10
>>>
从itertools导入dropwhile
迭代器=iter(范围(11))
对于迭代器中的i:
如果i==3:
i=dropwhile(lambda x:x>>foo()
i=0
i=1
i=2
i=8
i=9
i=10
>>>
可以在循环外部调用dropwhile,在迭代器上创建迭代器。
因为for循环和dropwhile都在同一个迭代器上调用next(),所以您可以对它进行一些控制
您还可以实现自己的迭代器,该迭代器使用send()来操作迭代器
@mshsayem:似乎是个打字错误,我想我应该用while而不是for,谢谢大家
iterator = iter(range(11))
for i in iterator:
print 'for i = ', i
try:
print 'next()', iterator.next()
except StopIteration:
continue
>>> foo()
for i = 0
next() 1
for i = 2
next() 3
for i = 4
next() 5
for i = 6
next() 7
for i = 8
next() 9
for i = 10
next()
>>>
from itertools import dropwhile
iterator = iter(range(11))
for i in iterator:
if i == 3:
i = dropwhile(lambda x: x<8, iterator).next()
print 'i = ', i
>>> foo()
i = 0
i = 1
i = 2
i = 8
i = 9
i = 10
>>>