2015-09-02 60 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 

但是,這裏最重要的教訓是簡單地在一個序列迭代(如字符串)或其他迭代允許您與每個迭代的元素的工作(單個字符,在這種情況下)。