Python中的循环
Python编程语言提供以下类型的循环来处理循环要求。 Python提供了三种执行循环的方法。虽然所有方法都提供了类似的基本功能,但它们的语法和条件检查时间不同。
- While循环:
- 在Python中,while 循环用于重复执行一个语句块,直到满足给定条件。并且当条件变为假时,程序中的循环之后的行将被执行。
语法:
while expression:
statement(s)
3. 在编程结构后缩进相同数量的字符空格的所有语句都被认为是单个代码块的一部分。 Python使用缩进作为分组语句的方法。
例子:
Python
# Python program to illustrate
# while loop
count = 0
while (count < 3):
count = count + 1
print("Hello Geek")
Python
if condition:
# execute these statements
else:
# execute these statements
Python
while condition:
# execute these statements
else:
# execute these statements
Python
#Python program to illustrate
# combining else with while
count = 0
while (count < 3):
count = count + 1
print("Hello Geek")
else:
print("In Else Block")
Python
# Python program to illustrate
# Single statement while block
count = 0
while (count == 0): print("Hello Geek")
Python3
# Python program to illustrate
# Iterating over range 0 to n-1
n = 4
for i in range(0, n):
print(i)
Python
# Python program to illustrate
# Iterating over a list
print("List Iteration")
l = ["geeks", "for", "geeks"]
for i in l:
print(i)
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("geeks", "for", "geeks")
for i in t:
print(i)
# Iterating over a String
print("\nString Iteration")
s = "Geeks"
for i in s :
print(i)
# Iterating over dictionary
print("\nDictionary Iteration")
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
print("%s %d" %(i, d[i]))
#Iterating over a set
print("\nSet Iteration")
set1 = {1,2,3,4,5,6}
for i in set1:
print(i),
Python
# Python program to illustrate
# Iterating by index
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print list[index]
Python
# Python program to illustrate
# combining else with for
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print list[index]
else:
print "Inside Else Block"
Python
for iterator_var in sequence:
for iterator_var in sequence:
statements(s)
statements(s)
Python
while expression:
while expression:
statement(s)
statement(s)
Python
# Python program to illustrate
# nested for loops in Python
from __future__ import print_function
for i in range(1, 5):
for j in range(i):
print(i, end=' ')
print()
Python
# Prints all letters except 'e' and 's'
for letter in 'geeksforgeeks':
if letter == 'e' or letter == 's':
continue
print 'Current Letter :', letter
var = 10
Python
for letter in 'geeksforgeeks':
# break the loop as soon it sees 'e'
# or 's'
if letter == 'e' or letter == 's':
break
print 'Current Letter :', letter
Python
# An empty loop
for letter in 'geeksforgeeks':
pass
print 'Last Letter :', letter
Python3
# A simple for loop example
fruits = ["apple", "orange", "kiwi"]
for fruit in fruits:
print(fruit)
Python3
fruits = ["apple", "orange", "kiwi"]
# Creating an iterator object
# from that iterable i.e fruits
iter_obj = iter(fruits)
# Infinite while loop
while True:
try:
# getting the next item
fruit = next(iter_obj)
print(fruit)
except StopIteration:
# if StopIteration is raised,
# break from loop
break
输出:
Hello Geek
Hello Geek
Hello Geek
- 将 else 语句与 while 循环一起使用:如上所述,while 循环执行块,直到满足条件。当条件变为假时,立即执行循环之后的语句。
else 子句仅在您的 while 条件变为 false 时执行。如果您跳出循环,或者如果引发异常,它将不会被执行。
如果还有这样的:
Python
if condition:
# execute these statements
else:
# execute these statements
- 和这样的while循环是相似的
Python
while condition:
# execute these statements
else:
# execute these statements
Python
#Python program to illustrate
# combining else with while
count = 0
while (count < 3):
count = count + 1
print("Hello Geek")
else:
print("In Else Block")
输出:
Hello Geek
Hello Geek
Hello Geek
In Else Block
- 单语句 while 块:就像 if 块一样,如果 while 块由单个语句组成,我们可以在一行中声明整个循环,如下所示:
Python
# Python program to illustrate
# Single statement while block
count = 0
while (count == 0): print("Hello Geek")
- 注意:建议不要使用这种类型的循环,因为它是一个永无止境的无限循环,其中条件始终为真,您必须强制终止编译器。
- for in 循环: for 循环用于顺序遍历。例如:遍历列表或字符串或数组等。在Python中,没有 C 风格的 for 循环,即 for (i=0; i
句法:
for iterator_var in sequence:
statements(s)
它可用于迭代范围和迭代器。
Python3
# Python program to illustrate
# Iterating over range 0 to n-1
n = 4
for i in range(0, n):
print(i)
输出 :
0
1
2
3
Python
# Python program to illustrate
# Iterating over a list
print("List Iteration")
l = ["geeks", "for", "geeks"]
for i in l:
print(i)
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("geeks", "for", "geeks")
for i in t:
print(i)
# Iterating over a String
print("\nString Iteration")
s = "Geeks"
for i in s :
print(i)
# Iterating over dictionary
print("\nDictionary Iteration")
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
print("%s %d" %(i, d[i]))
#Iterating over a set
print("\nSet Iteration")
set1 = {1,2,3,4,5,6}
for i in set1:
print(i),
输出:
List Iteration
geeks
for
geeks
Tuple Iteration
geeks
for
geeks
String Iteration
G
e
e
k
s
Dictionary Iteration
xyz 123
abc 345
通过序列索引迭代:我们也可以使用序列中元素的索引进行迭代。关键思想是首先计算列表的长度并在此长度范围内迭代序列。
请参见以下示例:
Python
# Python program to illustrate
# Iterating by index
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print list[index]
输出:
geeks
for
geeks
将 else 语句与 for 循环一起使用:我们还可以将 else 语句与 for 循环结合起来,就像在 while 循环中一样。但是由于 for 循环中没有条件终止执行,因此 else 块将在 for 块执行完毕后立即执行。
下面的示例说明了如何执行此操作:
Python
# Python program to illustrate
# combining else with for
list = ["geeks", "for", "geeks"]
for index in range(len(list)):
print list[index]
else:
print "Inside Else Block"
输出:
geeks
for
geeks
Inside Else Block
嵌套循环: Python编程语言允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明该概念。
句法:
Python
for iterator_var in sequence:
for iterator_var in sequence:
statements(s)
statements(s)
Python编程语言中嵌套 while 循环语句的语法如下:
Python
while expression:
while expression:
statement(s)
statement(s)
关于循环嵌套的最后一点是,我们可以将任何类型的循环放在任何其他类型的循环中。例如,for 循环可以在 while 循环内,反之亦然。
Python
# Python program to illustrate
# nested for loops in Python
from __future__ import print_function
for i in range(1, 5):
for j in range(i):
print(i, end=' ')
print()
输出:
1
2 2
3 3 3
4 4 4 4
循环控制语句:循环控制语句改变其正常顺序的执行。当执行离开一个范围时,在该范围内创建的所有自动对象都将被销毁。 Python支持以下控制语句。
- Continue 语句:它将控制返回到循环的开头。
Python
# Prints all letters except 'e' and 's'
for letter in 'geeksforgeeks':
if letter == 'e' or letter == 's':
continue
print 'Current Letter :', letter
var = 10
输出:
Current Letter : g
Current Letter : k
Current Letter : f
Current Letter : o
Current Letter : r
Current Letter : g
Current Letter : k
- Break 语句:它将控制带出循环
Python
for letter in 'geeksforgeeks':
# break the loop as soon it sees 'e'
# or 's'
if letter == 'e' or letter == 's':
break
print 'Current Letter :', letter
输出:
Current Letter : e
- Pass 语句:我们使用 pass 语句来编写空循环。 Pass 也用于空的控制语句、函数和类。
Python
# An empty loop
for letter in 'geeksforgeeks':
pass
print 'Last Letter :', letter
输出:
Last Letter : s
Python中的for循环如何在内部工作?
在继续本节之前,您应该事先了解Python迭代器。
首先,让我们看看一个简单的 for 循环是什么样子的。
Python3
# A simple for loop example
fruits = ["apple", "orange", "kiwi"]
for fruit in fruits:
print(fruit)
apple
orange
kiwi
在这里,我们可以看到 for 循环迭代了可迭代对象fruit,它是一个列表。列表、集合、字典是少数可迭代对象,而整数对象不是可迭代对象。
For 循环可以迭代任何可迭代对象(例如:List、Set、Dictionary、Tuple 或 String)。
现在借助上面的例子,让我们深入了解一下这里内部发生了什么。
- 借助 iter()函数使列表(可迭代)成为可迭代对象。
- 运行无限 while 循环并仅在引发 StopIteration 时才中断。
- 在 try 块中,我们使用 next()函数获取水果的下一个元素。
- 获取元素后,我们执行了要对元素执行的操作。 (即打印(水果))
Python3
fruits = ["apple", "orange", "kiwi"]
# Creating an iterator object
# from that iterable i.e fruits
iter_obj = iter(fruits)
# Infinite while loop
while True:
try:
# getting the next item
fruit = next(iter_obj)
print(fruit)
except StopIteration:
# if StopIteration is raised,
# break from loop
break
apple
orange
kiwi
我们可以看到,在底层我们调用了 iter() 和 next() 方法。