2013-10-28 29 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为实际值。

相关问题