【问题标题】:Accesing a list using index while using zip and enumerate使用 zip 和枚举时使用索引访问列表
【发布时间】:2014-06-12 03:16:36
【问题描述】:

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

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]

【问题讨论】:

  • 你想在 b 中等于什么。它确实意味着如果 b 的字母中的“a”是你想要搜索的 a

标签: python list indexing zip enumerate


【解决方案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 其余部分的错误

【讨论】:

  • 嗨,这将在该迭代中打印 b 的值。我想在上一次迭代中显示 b 的值,如 b[i-1]。
  • @user3732361 然后你不能使用 b 因为 b 只包含值。不是您的列表,然后使用您的原始列表
【解决方案2】:

您正在遍历字符串列表,因此 ab 已经是字符串。你不需要使用b[i]。出现错误是因为您试图访问字符串中不存在的位置(例如,b 中的元素 2 的长度仅为 1)。

我猜你在循环中想要的是:

if 'a' == b:
    print prarabdh[i-1]

也就是说,如果你在prarabdh 中找到一个元素'a',你想打印前一个元素。但是,如果第一个元素是'a',这将给出一个特殊的结果(打印prarabdh 中的最后一个元素)。此外,还不清楚为什么您首先使用zip,因为您从不使用循环中的第一个列表(即,您根本不使用变量a)。

【讨论】:

  • 非常感谢您的帮助!!
【解决方案3】:

我不确定你想要得到什么,但如果你想在你现在的那个之前输入,为什么不使用 prarabdh[i] 和 praradbh[i-1]?当然,praradbh[i] 和 b...

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多