2011-11-12 259 views
0

我試圖挽救的輸出存儲的for循環輸出我的for循環每次迭代...例如,這裏是我的代碼:每次迭代

def encrypt(key): 
for char in (key): 
    val = (ord(char)) - (96) 

例如,如果有人進入「笑」通過翻譯我的計劃產出...

encrypt("lol") 
12 
15 
12 

在這個例子中,我需要在內存中存儲12,15,12用於其他功能...誰能幫助?

回答

3

不是保存到某個臨時值val,而是將它保存到列表並返回列表。

def encrypt(key): 
    temp = list() 
    for char in(key): 
     temp.append((ord(char))-96) 
    return temp 
+0

哇,這正是我想要的,非常感謝你,我沒有考慮使用列表,因爲我們剛剛在課堂上學到了它們...... – user1043059

+0

下面的列表理解方法也不錯,但我不真的認爲使用它有任何性能收益。這是迄今爲止最容易理解的方法......正如鏈接的「列表理解」文章所提到的,列表推導專門用於map()或可能使用lambda函數以簡化這些的情況。 – 2011-11-12 11:45:15

+0

如果有必要在內存中存儲多個這樣的內容,那麼在字典中使temp成爲一個值,用lol作爲鍵可能是合適的。 – Jake

2

有很多的,你可以用它來做到這一點不同的方法,但在Python可能是最好的方法是使用一個列表理解,這樣的:

def encrypt(key): 
    return [ (ord(char)-96) for char in key ] 

http://docs.python.org/tutorial/datastructures.html#list-comprehensions

然後

encrypt('lol')將返回列表[12, 15, 12]

+0

列表理解是否有任何效率增益,還是完全審美? – 2011-11-12 11:42:25

+0

這個作品也很愉快!感謝球員們,不知道必須決定使用哪種方法,邁克爾或你的方法。 – user1043059

+0

@Michael。我不知道。我自己對Python很新。我似乎回想起我旅行的某個地方,我看到有一個*輕微的*性能增益,但現在我找不到它了,所以不要聽我說,我不知道它們是如何實現的。 – tjm