谁能解释如何x
取整数值。我们直接使用x
in for 循环 "for x in a" 编译器将如何识别它x
表示列表中的字符串?
>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12
谁能解释如何x
取整数值。我们直接使用x
in for 循环 "for x in a" 编译器将如何识别它x
表示列表中的字符串?
>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12
for
在 Python 中的工作方式与在 C 等语言中的工作方式不同。而不是像在 C 中那样向上/向下计数数值并检查结束条件:
for (i=0; i<=max; i++) do_something();
它遍历容器中的所有元素(其名称在 之后引用in
):
for item in iterable:
do_something(item)
它的精确行为取决于所使用的容器 ( iterable
) 的类型;在列表或元组中,它将从第一个元素开始,然后在列表/元组中一次移动一个项目,直到到达最后一个元素。然后每个元素将由一个名称(item
在本例中)引用,以便可以在循环体中对其进行操作。
在字典中,for
将遍历字典的键(以未指定的顺序),因此item
将包含字典的键。
在一个字符串中,它逐个遍历字符串的字母。等等。
X 如何取整数值
它不是。它正在获取您正在迭代的序列中包含的连续值,在这种情况下是字符串。
元素不必属于特定类型,甚至不必属于同一类型。
更专业一点,for
循环遍历由可迭代对象提供的迭代器。
可迭代对象可以是列表、字符串、元组等,迭代器是用于迭代的对象。
使用for i in a:
,您请求 的迭代器a
,这与使用 的方式完全相同iter(a)
。
有时候是这样的
the_iterator = a.__iter__()
a
有一个__getitem__()
, 通过调用这个连续增长的索引直到IndexError
被提升。然后在每次循环运行时调用.next()
(.__next__()
在 Python 3 中)该迭代器,直到迭代器耗尽并引发StopIteration
。
所以,换句话说:
for x in a: print x, len(x)
内部工作就像
a_iter = iter(a)
while True:
try: x = next(a)
except StopIteration: break
print x, len(x)
但看起来好多了。