此代码使错误'字符串索引超出范围'。为什么以及如何解决这个问题?
home=['asdf','0','5','1']
prarabdh=['moody','a','b','c']
for i, (a, b) in enumerate(zip(home, prarabdh)):
if 'a'==b[i]:
print b[i-1]
答案 0 :(得分:1)
home=['asdf','0','5','1']
prarabdh=['moody','a','b','c']
for i, (a, b) in enumerate(zip(home, prarabdh)):
if 'a'==b:
try:
print paradbh[i-1]
except ValueError:
print 'no such index'
这里b是prarabh的元素。没有必要为它们编制索引。因为第二个循环你访问b [1]但是b =' a' .so没有索引1这也导致lopp的错误休息
答案 1 :(得分:0)
您正在迭代字符串列表,因此a
和b
已经是字符串。您不需要使用b[i]
。您收到错误是因为您尝试访问字符串中不存在的位置(例如,b
中的元素2只有长度1)。
我猜测你想要的内容是:
if 'a' == b:
print prarabdh[i-1]
也就是说,如果您到达'a'
中的元素prarabdh
,则需要打印前一个元素。但是,如果第一个元素是prarabdh
,这将给出一个奇特的结果(打印'a'
中的最后一个元素)。此外,您还不清楚为什么您首先使用zip
,因为您从未使用循环中的第一个列表(即,您不使用变量总共a
。
答案 2 :(得分:0)
我不确定你想要得到什么,但是如果你想在你所在的那个之前进入,为什么不使用prarabdh [i]和praradbh [i-1]?当然,praradbh [i]与b ...相同。