Python如何迭代字符串?

时间:2015-09-02 19:39:33

标签: python for-loop

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

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

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

3 个答案:

答案 0 :(得分:0)

字符串是单个字符串的sequence。因此,当您迭代它时,您将获得序列中的每个单字符串。您还可以按照其他序列类型使用索引和切片操作。

答案 1 :(得分: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

然而,这里的重要教训就是迭代序列(如字符串)或其他迭代允许您使用每个可迭代的元素(在这种情况下为单个字符)。

答案 2 :(得分:0)

让我思考这个问题的最简单方法是记住“'字母”字样。很容易被你想要称之为的任何东西取代,它只是一个占位符。

为了说明,我们来代替字母'在你的循环中使用名称' Dave'。

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

没有'戴夫'在字符串Python中。但是这仍将打印出字符串' Python中的每个字母。这是因为当你设置你的循环迭代一个字符串时,正如你在这里所做的那样,你告诉python,无论你想要它做什么,在这种情况下打印',都需要完成字符串中的每个项目。

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

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