Python 中的循环方式主要有 for 和 while 两种,它们并不是一成不变的。根据情况的不同,我们可以选用不同的循环方式来实现同样的功能。
如果我们已经明确知道了循环要执行的次数,我们可以选择使用 for 循环而不是 while 循环。这是因为 for 循环的循环条件会在循环开始前就确定,因此可以更快地执行。
下面是一个循环求和的例子:
sum = 0
for i in range(1, 101):
sum += i
print(sum)
这个例子中的循环次数已经确定了,所以使用了 for 循环。如果使用 while 循环,代码会变得比较繁琐:
sum = 0
i = 1
while i <= 100:
sum += i
i += 1
print(sum)
这个例子中的循环条件是不确定的,所以使用了 while 循环。不仅代码较长,而且执行速度也不如使用 for 循环的例子快。
在编写循环代码时,我们要尽量避免不必要的循环次数。减少循环次数可以提高代码的执行效率。
比如下面这个例子:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(len(numbers)):
square = numbers[i] * numbers[i]
print(square)
这个例子中,我们对 numbers 列表中的每个元素求平方并打印出来。但实际上,我们只需要遍历列表一次即可完成这个任务,没有必要像上面的代码一样使用 for 循环遍历。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers:
square = number * number
print(square)
这个例子中,我们使用了 for 循环来遍历列表,但循环次数已经被预先确定了。这样可以避免不必要的循环次数,提高代码的执行效率。
使用生成器函数代替列表可以减少循环次数和内存占用。
下面是一个求斐波那契数列的例子:
def fib(n):
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a + b
return result
fib_list = fib(1000)
print(fib_list)
这个例子中,我们通过循环来生成斐波那契数列,然后将结果存储在列表中。但如果我们使用生成器函数来代替列表,可以极大地减少内存的占用和循环次数。
def fib(n):
a, b = 0, 1
while b < n:
yield b
a, b = b, a + b
fib_generator = fib(1000)
for fib_number in fib_generator:
print(fib_number)
这个例子中,我们使用 yield 语句来生成斐波那契数列,每次返回一个数。使用生成器函数代替列表的好处是,一旦生成器函数中的数被用过,它就被释放掉了,可以避免浪费内存。
在编写循环代码时,如果能够提前判断循环条件是否成立,就可以使用 continue 或 break 语句来跳出循环,减少循环次数。
比如下面这个例子:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = []
for number in numbers:
if number % 2 == 0:
continue
odd_numbers.append(number)
print(odd_numbers)
这个例子中,我们判断了每个数是否为奇数。如果是偶数,就不需要把它加入 odd_numbers 列表中,直接使用 continue 语句跳出循环即可。
又比如下面这个例子:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers:
if number == 5:
break
print(number)
这个例子中,我们在循环中判断了每个数是否等于 5。如果等于 5,就使用 break 语句跳出循环。
使用列表推导式可以让代码更简洁,同时也能够提高执行效率。
比如下面这个例子:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
square_numbers = []
for number in numbers:
square = number * number
square_numbers.append(square)
print(square_numbers)
这个例子中,我们使用循环和 append() 方法来生成每个数的平方并放入一个新列表中。使用列表推导式可以将这个过程写得更简洁:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
square_numbers = [number * number for number in numbers]
print(square_numbers)
这个例子中,我们使用列表推导式来生成每个数的平方,并放入一个新列表中。这个过程比使用循环和 append() 方法更加简洁,同时也能够提高代码的执行效率。
标签: VScode