奇怪的python索引与CSV-fi

2024-09-30 01:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些我很难理解的简单现象。 我加载了一个csv文件

import csv
with open('Salaries.csv', 'rb') as csvfile:
Salaries = csv.reader(csvfile, delimiter=',')
Salaries = [row for row in Salaries]

我查询它,例如看到5列

print Salaries[1][:]
['1985', 'BAL', 'AL', 'murraed02', '1472819']

如果我查找不存在的第5个索引,它会正确地抛出一个错误:

print Salaries[1][5]
IndexError: list index out of range

但如果我运行索引0:5,它不会抛出错误:

print Salaries[1][0:5]
['1985', 'BAL', 'AL', 'murraed02', '1472819']

奇怪的是,我看到了这些结果

print Salaries[1][0:1]
['1985']
print Salaries[1][0]
1985
print Salaries[1][1]
BAL

我知道我错过了一些基本的东西,我只是不明白。救命啊?你知道吗


Tags: 文件csvcsvfileimport错误withopenrow
1条回答
网友
1楼 · 发布于 2024-09-30 01:31:16

运行print Salaries[1][0:5]将打印包含从0th索引到5th索引的切片的列表,因此在数学术语中,范围是[0,4]或[0,5]。你知道吗

>>> mylist = [0,1,2,3,4]
>>> mylist[0:4]
[0, 1, 2, 3] #4 is excluded, although it is the 4th index

在2.7中,您可以任意地对任意数字进行切片,如果切片范围大于其长度,它将返回整个列表

>>> mylist[0:10231]
[0, 1, 2, 3, 4]

需要注意的是,这是python在函数中的典型特征,例如range(x,y),该函数在y之前存在,不包括y。这允许调用for i in range(0,len(mylist)),尽管许多python用户会建议使用不同的方法。你知道吗

相关问题 更多 >

    热门问题