我有一个列表,我希望通过手动更改索引值来显示带索引的内容。我试图以两种方式做到这一点,但它没有用。
方式1:
x=['hello','how','are','you','hope','you','are','fine','I','am','doing','work','in','python']
for i,item in enumerate(x):
print (i,item)
if item == 'are':
i+=2
方式2:
x=['hello','how','are','you','hope','you','are','fine','I','am','doing','work','in','python']
for i in xrange(len(x)):
print x[i]
if item == 'are':
i+=2
答案 0 :(得分:1)
此处的问题是,enumerate()
和xrange()
都会生成一系列不受i
的外部更改影响的值,这是一个未连接的变量。使用@ efferalgans的建议最好的方法可能是调用next()
函数两次,但这意味着存储对生成器的引用。所以你想做这样的事情:
x=['hello','how','are','you','hope','you','are','fine','I','am','doing','work','in','python']
g = enumerate(x)
for i,item in g:
print (i,item)
if item == 'are':
next(g)
next(g)
我从中看到了结果
0 hello
1 how
2 are
5 you
6 are
9 am
10 doing
11 work
12 in
13 python
答案 1 :(得分:1)
只需使用while循环。这是最简单,最清晰,最灵活的解决方案:
i = 0
while i < len(x):
print x[i]
if x[i] == 'are':
i+=1
i += 1
正如您所看到的,循环遍历字符串很简单,您可以完全自由地动态更改索引 - i
只是一个普通变量。目前还不清楚你的代码实际上是做什么的,所以上面做了你的代码(如果它有效)可以做的事情:它会跳过跟随这个词是“是”这个词。 / p>