2015-09-02 57 views
-6

在下面的代码中,Python如何知道单独打印每个字母?我真的无法围住它。Python如何迭代字符串?

for letter in 'Python': 
    print 'Current Letter :', letter 

它知道将字符串'Python'拆分为6个单独的字符串。它是如何做到的?

+2

因为遍历字符串会产生字符串的字符 – davidism

+0

您是否想知道如何从数据类型的角度来实现它? – albert

+0

它像'为字符串中的每个字符' – taesu

回答

0

我想想这个最简单的方法是记住'letter'这个词可以很容易地用你想要调用它的任何东西来代替,它只是一个占位符。

为了说明,让我们用名字'Dave'替换循环中的'letter'。

for Dave in 'Python': 
    print 'Current letter : ', Dave 

字符串Python中没有'Dave'。但是这仍然会打印出字符串'Python'中的每个字母。这是因为当你设置你的循环遍历一个字符串,就像你在这里所做的那样,你告诉python,无论你想要它做什么,在这种情况下'打印',都需要对字符串中的每个项目完成。

for stuff in 'my_string': 
    do stuff to every letter in my_string 

此外,由于您是StackExchange的新手,欢迎您。由于有太多的问题需要回答,为了节省每个人的时间,如果您在这里发布问题之前做了非常彻底的谷歌搜索以找出答案是否存在,那么效果最好。我确信有很多很好的资源可以帮助你理解这些概念!祝你好运。

+1

谢谢!这很清楚,并感谢您的建议:谷歌搜索!我发现我的知识非常基础,现在很难有效地谷歌,但我敢肯定我会到达那里! – ClennersIII

0

字符串是单字符串的sequence。所以当你迭代它时,你会得到序列中的每个单个字符串。您也可以按照其他序列类型使用索引和切片操作。

0

Python如何做到这一点?因此:

>>> import dis 
>>> def f(text): 
...  for letter in text: 
...    print(letter) 
... 
>>> dis.dis(f) 
    2   0 SETUP_LOOP    24 (to 27) 
       3 LOAD_FAST    0 (text) 
       6 GET_ITER 
     >> 7 FOR_ITER    16 (to 26) 
      10 STORE_FAST    1 (letter) 

    3   13 LOAD_GLOBAL    0 (print) 
      16 LOAD_FAST    1 (letter) 
      19 CALL_FUNCTION   1 (1 positional, 0 keyword pair) 
      22 POP_TOP 
      23 JUMP_ABSOLUTE   7 
     >> 26 POP_BLOCK 
     >> 27 LOAD_CONST    0 (None) 
      30 RETURN_VALUE 

但是,这里最重要的教训是简单地在一个序列迭代(如字符串)或其他迭代允许您与每个迭代的元素的工作(单个字符,在这种情况下)。