Python的For循环如何获取索引值?

64

我正在编写一个简单的Python for循环来打印字符串中的当前字符。但是,我无法获取字符的索引。这是我的代码,有人知道在循环中获取当前字符索引的好方法吗?

 loopme = 'THIS IS A VERY LONG STRING WITH MANY MANY WORDS!'

 for w  in loopme:
    print "CURRENT WORD IS " + w + " AT CHARACTER " 

1
除了编号问题,你确定这就是你想要的吗?w代表当前字符,而不是单词。 - Andrew Jaffe
2个回答

111

使用enumerate()函数来生成序列的索引及其元素:

for index, w in enumerate(loopme):
    print "CURRENT WORD IS", w, "AT CHARACTER", index 

使用enumerate()函数时,需要定义两个变量吗?一个用于索引,一个用于字符? - user1817081
2
@user1817081:你不一定要这样做;现在你正在循环遍历一个产生两个值元组的东西。使用元组解包只是让接收它们更容易。 - Martijn Pieters
3
你还可以使用 for elem in enumerate(loopme),然后使用 elem[0] 获取索引值,使用 elem[1] 获取字符,但这样会更加繁琐。 - Martijn Pieters
明白了,所以enumerate()正在创建字符串的映射。我猜这也适用于列表? - user1817081
3
enumerate()可以用在任何序列上。它不会创建一个映射,只是保持一个计数器。每次for循环询问下一个元素时,它会转而向包裹的序列请求下一个项,然后返回计数器的值和来自包裹序列的下一个值,然后增加内部计数器。 - Martijn Pieters

5

您想遍历字符还是单词?

如果是单词,您需要先将单词分割,比如:

for index, word in enumerate(loopme.split(" ")):
    print "CURRENT WORD IS", word, "AT INDEX", index

这会输出单词的索引。

如果需要获取绝对字符位置,您需要类似于以下代码:

chars = 0
for index, word in enumerate(loopme.split(" ")):
    print "CURRENT WORD IS", word, "AT INDEX", index, "AND AT CHARACTER", chars
    chars += len(word) + 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接