Python的数据结构——列表

开课吧开课吧锤锤2021-03-17 10:12

    Python语言应该如何入门,如果你在网上随便搜了一下饥不择食的找了一些书开始啃起来,结果发现很疑惑,感觉吃力!学Python和学其他的语言其实是相同的,入门大致这样几步:找本靠谱的书,,找个靠谱的师傅,找一个地方开始练习。今天就为大家解读一下Python的数据结构——列表

py

    与元组对⽐,列表的⻓度可变、内容可以被修改。

    生成

    可以使用方括号生成列表

    In[21]:list1=[1,2,3]

    In[22]:list1

    Out[22]:[1,2,3]

    可以使用list函数将其他的数据结构转化为列表:

    In[23]:list2=list(tuple2)

    In[24]:list2

    Out[24]:[1,'a',2]

    In[25]:type(list2)

    Out[25]:list

    添加或删除元素

    可以使用append函数在列表末尾添加元素

    In[33]:list1.append(4)

    In[34]:list1

    Out[34]:[1,2,3,4]

    使用insert(a,b)函数将元素插入特定位置。其中a代表位置的索引(编号),b代表想要插入的元素:

    In[39]:list1.insert(4,5)

    In[40]:list1

    Out[40]:[1,2,3,4,5]

    insert的逆运算是pop,它移除并返回特定位置的元素。pop里面的值代表要移除的元素对应的编号

    In[41]:list1.pop(1)

    Out[41]:2

    In[42]:list1

    Out[42]:[1,3,4,5]

    remove函数被用来去除列表里面的某个特定元素。remove里面的取值代表要被去除的元素。需要注意的是,这个函数只能移除第一个特定元素。

    In[43]:list3=[1,2,1,2]

    In[44]:list3.remove(2)

    In[45]:list3

    Out[45]:[1,1,2]

    使用in和notin函数可以检测元素在不在列表里面。

    对于in来说,返回值是TRUE,代表元素在列表里面,返回值是FALSE,代表元素不在列表里面。对于notin就反过来

    In[46]:1inlist3

    Out[46]:True

    In[47]:1notinlist3

    Out[47]:False

    串联

    与元组类似,也可以使用加号把两个列表串联起来

    In[51]:list1+list2

    Out[51]:[1,3,4,5,1,'a',2]

    使用extend函数,也可以实现列表的串联:

    In[49]:list3.extend([3,4,5,6])

    In[50]:list3

    Out[50]:[1,1,2,3,4,5,6]

    排序

    可以使用sort函数对列表里面的元素进行排序

    In[52]:list4=[2,3,1,8,10,9]

    In[53]:list4.sort()

    In[54]:list4

    Out[54]:[1,2,3,8,9,10]

    sort有⼀些选项,有时会很好用。其中之⼀是二级排序key,可以以它为标准进行排序。例如,我们可以按长度对字符串进行排序:

    In[56]:list5=['ab','a','abc']

    In[57]:list5.sort(key=len)

    In[58]:list5

    Out[58]:['a','ab','abc']

    切片

    这个操作类似于R语言中的切片,但还是有所不同。R语言中的切片可以取得编号对应的所有的元素,而Python不能取到最后一个数字所对应的元素。这里在示例里面说一下:

    In[64]:list4[2:5]

    Out[64]:[3,8,9]

    list4的第2到5个元素分别为:3,8,9,10,而这里没有取到10,这说明切片操作里面并不会取最后一个编号所对应的数字。

    切片也可以进行赋值:

    In[66]:list4[2:5]=[100,99,98]

    In[67]:list4

    Out[67]:[1,2,100,99,98,10]

    负数可以表示从后往前切片:

    In[69]:list4[-5:-2]

    Out[69]:[2,100,99]

    另一种切片的方法,是利用list[a:b:c],其中a表示开始的编号,b表示结束的编号,c表示选择的步幅,如下所示:

    In[70]:list4[-5:-2:1]

    Out[70]:[2,100,99]

    In[71]:list4[-5:-2:2]

    Out[71]:[2,99]

    In[72]:list4[-5:-2:-1]

    Out[72]:[]

    In[73]:list4[-2:-5:-1]

    Out[73]:[98,99,100]

    c如果是负数的话,可以表示从后往前进行取值。可以利用这样的方法将列表的元素颠倒过来。

    序列函数

    利用enumerate函数,可以得到列表中不同元素所对应的序号(索引):

    In[79]:list(enumerate(list4))

    Out[79]:[(0,1),(1,2),(2,100),(3,99),(4,98),(5,10)]

    可以看到,生成了由六个元组构成的列表,其中每个元组的第一个元素表示序号,第二个元素表示在list4中对应的元素。

    和sort函数类似,sorted函数可以对列表进行排序。

    In[80]:list4

    Out[80]:[1,2,100,99,98,10]

    In[81]:sorted(list4)

    Out[81]:[1,2,10,98,99,100]

    zip函数可以把多个列表,元组或者其他序列组合成一个由元组构成的列表。zip函数在编程的时候有很广的应用,利用zip函数可以实现对于多个数据结构的循环

    In[82]:list6=[10,11,12]

    In[83]:list7=['b','o','y']

    In[84]:zip(list6,list7)

    Out[84]:<zipat0x2ac7750d608>

    In[85]:list(zip(list6,list7))

    Out[85]:[(10,'b'),(11,'o'),(12,'y')]

    可以看到,zip函数并不能直接显示出结果,需要先利用list函数转化为列表。这是因为zip函数生成一种叫做“迭代器”的数据结构,我们后面再讲。包括前面的enumerate函数,也是生成的迭代器。

    reversed函数可以从后往前迭代列表元素。这个函数是一个生成器(简单理解为创建迭代器的简单而强大的工具)。所以要把reversed函数的取值转化为列表,才可以显示出结果。

    In[86]:list(reversed(list6))

    Out[86]:[12,11,10]

    以上就是列表的详解,更多Python教程相关内容尽在开课吧广场Python教程频道。

有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
零基础轻松入门Python