2013-10-28 27 views
-2

,而我寫我的代碼類型錯誤:指數必須爲整數,不str的如何解決

for i in str_list: 
    bin_list.append(codes[i]); 
    bin=bin+codes[i];  

它說,指數必須是整數海峽。我想爲str_list中的所有字符做。

+2

這裏的代碼是什麼?什麼是期望的輸出?你有沒有輸入樣本?* str_list中的*是什麼? –

+1

專業提示:Python代碼不需要';'分號。你可以刪除那些沒有結果。 –

+0

str_list包含字符序列 – user2851022

回答

1
for i in str_list: 

不會給字符串中的字符索引,而是字符串中的實際字符本身。你需要的是這個

for i in xrange(len(str_list)): 

現在,i將給你的指數。閱讀關於xrange

編輯有時,您可能需要索引以及與該索引對應的實際字符。而不是做

for i in xrange(len(str_list)): 
    str_list[i] 

,你可以使用enumerate

for index, char in enumerate(str_list): 
+0

一般情況下,您會希望使用'enumerate()'來生成索引;但是OP很難清楚OP在這裏想要什麼。 –

+0

@MartijnPieters哦,我不知道'枚舉'是一個生成器。我還會在答案中補充一點。 – thefourtheye

+0

@thefourtheye已經添加枚舉,heheheheh –

2

For循環Python中給你的價值觀,而不是indicies,如果你想要索引,這樣做:

for i, var in enumerate(str_list): ... 

一個演示:

>>> h = "hello world" 
>>> for i in h: print i 
h 
e 
l 
l 
o 

w 
o 
r 
l 
d 

然而,使用enumerate

>>> for i, var in enumerate(h): print i 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

你得到的索引。請注意,enumerate會給你一個tuple。我的意思是這樣的:

>>> for var in enumerate(h): print var 
(0, 'h') 
(1, 'e') 
(2, 'l') 
(3, 'l') 
(4, 'o') 
(5, ' ') 
(6, 'w') 
(7, 'o') 
(8, 'r') 
(9, 'l') 
(10, 'd') 

所以,當我們說了i, var in ...,我們分裂的元組分爲二。第一個值,指數爲i,第二個值var爲實際值。

相關問題