【问题标题】:List index out of range error, for list containing string列表索引超出范围错误,对于包含字符串的列表
【发布时间】:2014-10-06 18:43:25
【问题描述】:

我有一个名为 headers 的列表列表。每个子列表中包含的数据都是二进制的。

标题[5] = ['t\x04\x1e\x01I\x1a\t\x11\x02Rz\x7fI\x00H:\x00\x1a\x13I\x1aOEH\x0f\x1d\rS\x04']

当我有一个如 l = ["hello",1,22,"ex"] 的列表时,我可以使用 l[0][2] 来访问元素 'l'。

同样,当我想访问包含在列表标题[5] 中的二进制数据的第 n 个字节时,我得到一个列表索引超出范围错误。如何访问此列表标题[5] 中的第 n 个字节?

我的目标是通过将文件拆分为“keysize”长度字节,从文件对象“text”中的给定二进制数据创建列表列表。

之后,我想将所有列表的第一个字节放入列表'nheads'中的新列表中,将所有'heads'列表的第二个字节放入nheads中,依此类推。

我的部分代码是:

parti = len(text)/keysize 
headers = [[] for k in range(0, parti)]
nheads = [[] for k in range(0, parti)]
pcount = 0
for i in xrange(0,parti):
    if (pcount < len(text)):
        headers[i].append(text[i*keysize:(i+1)*keysize])
        pcount += 1
    else :
        pcount += 1

print headers[5][2]
count = 0
for i in xrange(0,parti):
    for j in xrange(0,parti):
        if(count < len(text)):
            nheads[i].append(headers[j][i])
            count = count + 1
        else:
            count = count + 1

我得到的错误是:

utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py 
['t\x04\x1e\x01I\x1a\t\x11\x02Rz\x7fI\x00H:\x00\x1a\x13I\x1aOEH\x0f\x1d\rS\x04']
Traceback (most recent call last):
File "6.py", line 65, in <module>
nheads[i].append(headers[j][i])
IndexError: list index out of range
utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py 
Traceback (most recent call last):
File "6.py", line 60, in <module>
print headers[5][2]
IndexError: list index out of range

【问题讨论】:

  • 请发布您正在运行的代码示例、运行该代码获得的实际回溯以及预期输出。
  • 如果heads[5] 正在返回单个项目列表,您是否正在尝试heads[5][char_index] 而您想要的是heads[5][0][char_index]
  • 我也试过了,错误字符串索引超出范围。

标签: python list indexing binary


【解决方案1】:

两种可能: 1. 头部列表未正确初始化,长度小于6。 2. n 大于 head[5] 的长度。 尝试打印(str(head [5]))。如果发生错误,则为情况 1,否则为情况 2。 也可以依次尝试 len(head) 和 len(head[5])。

【讨论】:

    【解决方案2】:

    由于列表是列表的列表,因此您使用的第二个元素选择器是选择包含列表中的元素,而不是二进制字符串中的字节元素。

    尝试“heads[5][0][n]”而不是“heads[5][n]”。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 2021-05-12
      相关资源
      最近更新 更多