typeerror:索引必须是整数而不是str我该如何解决

时间:2013-10-28 07:25:36

标签: python python-2.7

我正在编写代码

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

它表示索引必须是整数而不是str。我想对str_list中的所有字符执行此操作。

2 个答案:

答案 0 :(得分:2)

对于python中的for循环,如果需要索引,则为您提供值,而不是标记,请执行以下操作:

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转到实际值。

答案 1 :(得分: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):