2017-03-02 111 views
2

我試圖將每個帶有%12 = 0索引的字母放入一個單獨的字符串中。但出於某種原因,它會不斷打印字符串的第一個字母兩次?僅供參考:代碼非常基礎,我不擅長編碼,但試圖變得更好。謝謝。(Python)打印兩次的第一個字母字符串

string1 = 'nfhcizhfpntxolaqhpgvjehzsw' 

final = ' ' 

for letter in string1: 
    if (string1.index(letter) % 12 == 0): 
     final = final + letter 
     print (letter) 

它輸出以下:nNOS的

當它應該是:號

+2

爲什麼不使用切片? '最後= string1 [:: 12]' – falsetru

回答

8

index返回第一發生該串中的信的。

由於n出現在第一位置(它的工作原理),而且在其它位置,第二個電話返回0和字母被複制(它還有一個討厭的O(n**2)複雜性,因爲它每次都從開始搜索即使它的工作原理)

正確的方法是:

string1[::12] 

片串每次取12字符從指數0開始也避免了醜陋和underperformant字符串連接

+0

感謝您的幫助!現在正在工作。出於好奇,究竟是什麼[:: 12]在做什麼? –

+0

看到我的編輯。字符串切片。 –

相關問題