列表索引和反向索引

2024-10-03 23:30:57 发布

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

Python与索引

我一直在研究一个普通的Python代码来将数据从csv中分离出来。我的目标是使用多种策略重新创建这段代码,以便更好地理解Python。稍后将对该代码进行改进。我的代码是有效的,但有一些事情我不明白。这里是:

with open('C:\My Super Secret Path\primary_debates_cleaned.csv') as primaryData:
    headers = primaryData.readline().strip('\n').split(',')

    flag = 0
    for lines in primaryData:
        sepInit = lines.strip('\n').split('"')

        if flag == 1:
            sep1 = [item for item in sepInit[0].split(',') if item is not '']
            sep2 = sepInit[1]
            sep3 = [item for item in sepInit[2].split(',') if item is not '']

            #sep4 = sepInit[3]
            sep4 = sepInit[-2]

            #sep5 = sepInit[4].strip(',')
            sep5 = sepInit[-1].strip(',')

            #sepFinal = [sep1[0], sep1[1], sep2, sep3[0], sep3[1], sep4, sep5]
            sepFinal = [sep1[0], sep1[1], sep2, sep3[0:1], sep3[1:2], sep4, sep5]

        if flag == 0:
            sepFinal = headers
            flag = 1

print sepFinal

我的第一个问题是关于这个片段,特别是索引:

^{pr2}$

注释的部分是我想做的,而未注释的部分是有效的。似乎我必须反转索引以获取正确的信息。“类型”似乎是相同的,都是列表。是我在开始的时候做得不对,还是我在这里遗漏了一些简单的东西?在

我的下一个问题也有类似的味道,来自下面的片段:

#sepFinal = [sep1[0], sep1[1], sep2, sep3[0], sep3[1], sep4, sep5]
sepFinal = [sep1[0], sep1[1], sep2, sep3[0:1], sep3[1:2], sep4, sep5]

为什么我只需使用0和1就可以从sep1获取所需的信息,而对sep3却不能这样做?在

最后,在打印列表sepFinal时,sep4和{}的元素显示为列表。其他所有内容都只是列表sepFinal的一个元素,但是sep4和{}是列表中的列表。如果这需要澄清,请告诉我。那么,为什么sep4sep5出现在我的列表中?在

编辑0:没有对此的输入。我将进入PowerShell,并键入python mySecretProgramName.py来运行它。print sepFinal显示以下括号:

>>> [element 1, element 2, element 3, [element 4], [element 5]]

从一开始,我希望它是:

>>> [element 1, element 2, element 3, element 4, element 5]

编辑1:由于数据拆分不正确,需要负索引。sepInit的长度正在更改,因此索引不正确。感谢@martineau指出了这种可能性。我通过简单地将print(len(sepInit))放在sepInit之后的循环中进行测试。在

负索引信息:someList[-1]获取列表中的最后一项,someList[-2]获取列表中倒数第二项,等等

编辑2:这涉及sep3[0:1]等。这实际上是从列表中抽取一部分,其中sep3[0:1]将返回位于0和1之间的任何元素。在


Tags: 代码列表ifelementitemflagsplitstrip