-3

在我写代码的时候

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

它说索引必须是整数而不是str。我想对str_list.

4

2 回答 2

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')

因此,当我们说 for 时i, var in ...,我们将元组分成两部分。第一个值,索引转到i,第二个值var转到实际值。

于 2013-10-28T07:28:33.983 回答
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]

你可以使用枚举

for index, char in enumerate(str_list):
于 2013-10-28T07:27:57.777 回答