列出索引和反向索引

时间:2016-10-24 22:48:03

标签: python list indexing

Python和索引

我一直在研究一个vanilla 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

我的第一个问题涉及此代码段,特别是索引:

#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]

为什么我只能使用0和1从sep1获取所需信息,但我不能对sep3执行相同操作?

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

EDIT0:没有输入。我将进入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]

EDIT1:由于数据分割不当,需要负索引。 sepInit的长度发生了变化,因此索引不正确。感谢@martineau指出这种可能性。我通过简单地将print(len(sepInit))放在循环中sepInit来测试了这一点。

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

EDIT2:这涉及sep3[0:1]等。这基本上是列表的一部分,其中sep3[0:1]将返回位置0和1之间的任何元素。

0 个答案:

没有答案