对于Python中的循环变量

时间:2012-11-22 11:16:06

标签: python for-loop python-2.7

任何人都可以解释x如何获取整数值。我们直接使用x for 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

3 个答案:

答案 0 :(得分:5)

for在Python中的工作方式与它在C语言中的工作方式不同。而不是像往常一样在C中计算数字值并检查结束条件:

for (i=0; i<=max; i++) do_something();

迭代容器中的所有元素(其名称在in之后引用):

for item in iterable:
    do_something(item)

它的精确行为取决于所使用的容器类型(iterable);在列表或元组中,它将从第一个元素开始,然后一次在列表/元组中移动一个项目,直到达到最终元素。然后,每个元素将通过名称(在此示例中为item)引用,以便可以在循环体中对其进行操作。

在字典中,for将遍历字典的键(以未指定的顺序),因此item将包含字典的键。

在字符串中,它逐个遍历字符串的字母。等

答案 1 :(得分:2)

  

X如何取整数值

不是。它取你正在迭代的序列中包含的连续值,这种情况就是字符串。

元素不必是特定类型,也不必是相同类型。

答案 2 :(得分:0)

为了更具技术性,for循环迭代迭代器提供的迭代器。

iterable可以是列表,字符串,元组等,迭代器是用于迭代的对象。

使用for i in a:,您要求a的迭代器,与iter(a)完全一样。

发生这种情况

  • 致电the_iterator = a.__iter__()
  • 或者,如果这不起作用,但a有一个__getitem__(),可以通过连续增长索引来调用它,直到IndexError被提升为止。

然后在每个循环运行中将此调解器称为.next()(在Python 3中为.__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)

但看起来更好。