【发布时间】:2015-11-30 14:22:43
【问题描述】:
我有一个列表,我试图循环并索引列表中每个数字的编号。总列表大约有 1500-2000 个数字,其中每个数字代表受试者的行为。我通过 Excel 表导入了数字列表:
import openpyxl
from openpyxl import load_workbook
wb = load_workbook('/data.xlsx')
ws = wb['bhv.TrialError']
trialerror10_22=[]
for column in ws.columns:
for cell in column:
trialerror10_22=(cell.value)
print(trialerror10_22)
这一切都很好,并在列表中打印出我的 1500 左右的数字。接下来我尝试索引数字,范围从 0 到 9,并按以下顺序与标签相关联:
labels = ['C','NR', 'LR', 'BF', 'NF', 'ER', 'IR', 'LB', 'I', 'A']
def bhvread(trialerror10_22):
test=False
results = [0] * (max(data) + 1)
for val in data:
results[val] +=1
return results
for index, val in enumerate(results):
print(index, labels[index], val)
但是当我运行这部分时,它会显示 Index Error: list index out of range 并指向我的代码的最后一行。
输出:
0 C 1
1 NR 0
2 LR 0
3 BF 0
4 NF 0
5 ER 0
6 IR 0
7 LB 0
8 I 0
9 A 0
【问题讨论】:
-
我看不出您的代码示例之间的联系。给
bhvread的data是什么?你甚至在任何地方调用这个函数吗? -
为什么是
max(data)+1?不应该是len(data)吗?你正在枚举results,但你索引labels所以要小心至少有相同数量的元素 -
我不明白您所说的“索引通过”列表和“接下来我尝试索引数字,范围从 0 到 9,并按此顺序与标签相关联。”如果您提供输入和预期输出的样本会有所帮助,因为您的描述非常混乱。
-
对不起大家的困惑,我显然不精通python,但我在excel中有一列数字,我使用数据的第一部分将它带入python,它在一个名为的列表中
trialerror10_22,当我打印出来时,它是这样的:0 0 0 3 0 0和 1500 个数字。我想计算我的数字列表中有多少个 0 - 9。我的输出看起来像这样,但由于索引错误而不起作用。0 C 1 1 NR 0 2 LR 0 3 BF 0 4 NF 0 5 ER 0 6 IR 0 7 LB 0 8 I 0 9 A 0 -
并且输出的格式是错误的,它就像列表的一列和第二部分的输出..对不起,我可能让这真的很混乱跨度>
标签: python list python-3.x for-loop enumerate