使用zip和枚举时使用索引访问列表

时间:2014-06-12 03:16:37

标签: python list indexing zip enumerate

此代码使错误'字符串索引超出范围'。为什么以及如何解决这个问题?

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]

3 个答案:

答案 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)

您正在迭代字符串列表,因此ab已经是字符串。您不需要使用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 ...相同。