理解 Python 中的 for 循环
- 2025-02-28 08:22:00
- admin 原创
- 80
问题描述:
我尝试创建一个for
循环,但遇到了问题。我不明白这些循环是如何工作的,我认为问题出在我使用的for
语法不正确。
据我了解,for
循环应该是这样的
for w in words:
print(w, len(w))
但它究竟是如何工作的呢?
尽量具体一点: 是什么意思? 我怎么知道在和之间以及 之后w
要写什么? 代码运行时究竟发生了什么?for
`in`in
for
有关循环实现方式的更多技术细分,请参阅带有可迭代对象的 Python for 循环如何工作?。
解决方案 1:
循环每次循环都会获取可迭代对象for
中的每个项目,并将该值分配给变量(例如或)。循环内的代码会重复执行,并将每个值重新分配给该变量,直到循环用完所有项目。w
`number`
请注意,使用的名称不会影响每次循环分配的值。类似代码for letter in myvar:
不会强制程序选择字母。名称只是每次循环letter
获取下一个项目。“下一个项目”是什么,完全取决于是什么。myvar
`myvar`
打个比方,想象一下你有一个装满商品的购物车,收银员正在逐一检查它们:
for eachitem in mybasket:
# add item to total
# go to next item.
如果mybasket
实际上是一袋苹果,那么eachitem
它将in mybasket
是一个单独的苹果;但如果mybasket
实际上是一个购物车,那么整个袋子本身就可以有意义地成为一个“物品”。
解决方案 2:
循环for
适用于可迭代对象:即表示其他对象的有序集合的对象(它不必实际存储它们;但大多数类型的可迭代对象(称为序列)都需要存储它们)。字符串是可迭代的:
>>> for c in "this is iterable":
... print(c, end=" ")
...
t h i s i s i t e r a b l e
然而,数字不是:
>>> for x in 3:
... print("this is not")
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
内置函数range
可以轻松迭代一系列数字:
>>> for x in range(3):
... print(x)
...
0
1
2
在 2.x 中,range
只需使用这些整数值创建一个列表;在 3.x 中,它会创建一种特殊的对象,当for
循环需要时,该对象会根据需要计算数字。
解决方案 3:
简单来说,Python 循环遍历可迭代对象,例如字符串、列表或元组。对于列表,它将循环遍历列表元素:
>>> numbers = [1, 2, 3, 4, 5]
>>> for n in numbers: print(n)
1
2
3
4
5
对于字符串,它将循环遍历各个字符(技术上讲,Unicode 代码点):
>>> my_happy_string = "cheese"
>>> for c in my_happy_string: print(c)
c
h
e
e
s
e
以下是另一个带有单词列表的示例:
>>> list_of_words = ["hello", "cat", "world", "mouse"]
>>> for word in list_of_words: print(word)
hello
cat
world
mouse
如果您想要一个for
从 开始0
并于 结束的循环10
,则可以使用内置range
函数:
>>> for i in range(0, 10): print(i)
0
1
2
3
4
5
6
7
8
9
解决方案 4:
您所拥有的更像是一个foreach
循环。
也许是这样的:
input = raw_input("> ") #separate with spaces
sum = 0
numbers = [int(n) for n in input.split()]
for number in numbers:
sum = sum + number
print sum
扫码咨询,免费领取项目管理大礼包!