2024-04-27 22:39:41 发布
网友
有人能解释一下x是如何获取整数值的吗。我们直接在for循环中使用x“for x in a” 编译器如何识别x表示列表中的字符串?
x
>>> # Measure some strings: ... a = ['cat', 'window', 'defenestrate'] >>> for x in a: ... print x, len(x) ... cat 3 window 6 defenestrate 12
为了更具技术性,循环for在iterable提供的迭代器上迭代。
for
iterable可以是列表、字符串、元组等,迭代器是用于迭代的对象。
使用for i in a:,您请求a的迭代器,与使用iter(a)的方式完全相同。
for i in a:
a
iter(a)
这种情况会发生
the_iterator = a.__iter__()
__getitem__()
IndexError
然后在每个循环上调用这个interator .next()(Python 3中的.__next__()),直到迭代器耗尽并引发StopIteration。
.next()
.__next__()
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)
但看起来好多了。
how X is taking integer values
不是的。它获取迭代序列中包含的连续值,在这种情况下是字符串。
这些元素不必是特定类型的,甚至不必是同一类型的。
for在Python中的工作方式与在C之类的语言中的工作方式不同。而不是像在C中那样上下计算数值并检查结束条件:
for (i=0; i<=max; i++) do_something();
它遍历容器中的所有元素(其名称在in之后引用):
in
for item in iterable: do_something(item)
它的精确行为取决于使用的容器类型(iterable);在列表或元组中,它将从第一个元素开始,然后一次移动列表/元组中的一个项,直到到达最后一个元素。然后,每个元素都将被一个名称(item在本例中)引用,以便可以在循环体中对其进行操作。
iterable
item
在字典中,for将遍历字典的键(按未指定的顺序),因此item将包含字典的键。
在字符串中,它逐个遍历字符串的字母。等等
为了更具技术性,循环
for
在iterable提供的迭代器上迭代。iterable可以是列表、字符串、元组等,迭代器是用于迭代的对象。
使用
for i in a:
,您请求a
的迭代器,与使用iter(a)
的方式完全相同。这种情况会发生
the_iterator = a.__iter__()
a
有一个__getitem__()
,通过使用连续增长的索引调用它,直到IndexError
被提升。然后在每个循环上调用这个interator
.next()
(Python 3中的.__next__()
),直到迭代器耗尽并引发StopIteration
。所以,换句话说:
内部工作方式如下
但看起来好多了。
不是的。它获取迭代序列中包含的连续值,在这种情况下是字符串。
这些元素不必是特定类型的,甚至不必是同一类型的。
for
在Python中的工作方式与在C之类的语言中的工作方式不同。而不是像在C中那样上下计算数值并检查结束条件:它遍历容器中的所有元素(其名称在
in
之后引用):它的精确行为取决于使用的容器类型(
iterable
);在列表或元组中,它将从第一个元素开始,然后一次移动列表/元组中的一个项,直到到达最后一个元素。然后,每个元素都将被一个名称(item
在本例中)引用,以便可以在循环体中对其进行操作。在字典中,
for
将遍历字典的键(按未指定的顺序),因此item
将包含字典的键。在字符串中,它逐个遍历字符串的字母。等等
相关问题 更多 >
编程相关推荐