Python应用轻松入门
上QQ阅读APP看书,第一时间看更新

3.4 序列型数据元组和列表

Python不仅支持数字、字符串型数据,还支持对一组数据进行处理,这种能表示多个数据的类型称为组合数据类型。和字符串一样,有序列,可以索引及切片的数据类型称为序列数据类型,如列表和元组。所有序列型数据(字符串、元组、列表)都有通用的操作符和函数,见表3-6。

表3-6 序列型数据的操作符和函数

1.元组

元组,例如x=(5,6,8,2,2),由小括号和逗号组成,表3-6中所有的操作符和函数都可以使用,示例代码如下:

    #//第3章/3.6.py
    x=(5,6,8,2,2)
    y=(5,6)
    print('5在x内吗:',(5 in x))
    print('x+y=',x+y)
    print('x*2=',x*2)
    print('索引:',x[0],'切片:',x[:2],'步长切片:',x[::2])
    print('长度:',len(x),'最小值:',min(x),'最大值:',max(x),)
    print('2第1次出现的索引号:',x.index(2))
    print('2出现次数:',x.count(2))

运行结果如下:

    5在x内吗:True
    x+y=(5,6,8,2,2,5,6)
    x*2=(5,6,8,2,2,5,6,8,2,2)
    索引:5切片:[5,6]步长切片:[5,8,2]
    长度:5最小值:2最大值:8
    2第1次出现的索引号:3
    2出现次数:2

因为元组一旦定义,就不能修改了,所以一般情况下将不能修改的数据用元组表示,而将能灵活修改的数据用列表表示。

2.列表

列表,例如x=[5,6,8,2,2],由中括号和逗号组成,表3-6所有的操作符和函数都可以使用,代码如下:

    #//第3章/3.7.py
    x=[5,6,8,2,2]
    y=[5,6]
    print('5在x内吗:',(5 in x))
    print('x+y=',x+y)
    print('x*2=',x*2)
    print('索引:',x[0],'切片:',x[:2],'步长切片:',x[::2])
    print('长度:',len(x),'最小值:',min(x),'最大值:',max(x),)
    print('2第1次出现的索引号:',x.index(2))
    print('2出现次数:',x.count(2))

运行结果如下:

    5在x内吗:True
    x+y=[5,6,8,2,2,5,6]
    x*2=[5,6,8,2,2,5,6,8,2,2]
    索引:5切片:[5,6]步长切片:[5,8,2]
    长度:5最小值:2最大值:8
    2第1次出现的索引号:3
    2出现次数:2

这里仅将3.6.py文件中的元组修改为列表,即将x和y修改为列表,函数和操作符的使用与3.6.py文件中的用法完全相同。

还有一些列表的操作方法,见表3-7(表中列表list1=[1,'1',[1]])。

表3-7 列表的操作方法

示例代码如下:

    #//第3章/3.8.py
    list1=[1,'1',[1]]
    list1.append(3)          #1最后加入元素3
    print(1,":",list1)
    list1.insert(0,3)                #2 0位置插入元素3
    print(2,":",list1)
    list1.clear()                    #3清除所有元素
    print(3,":",list1)
    list1=[1,'1',[1]]
    list1.pop(1)                     #4取出第1个并删除
    print(4,":",list1)
    list1=[1,'1',[1]]
    list1.remove('1')                #5删除首次出现的'1'
    print(5,":",list1)
    list1=[1,'1',[1]]
    list2=list1.copy()              #6复制成新列表
    print(6,":",list2)
    l3=[3,1,5]
    l3.sort(reverse=True)           #7降序排列
    print(7,":",l3)
    l3.sort()                        #8升序排列
    print(8,":",l3)

运行结果如下:

    1:[1,'1',[1],3]
    2:[3,1,'1',[1],3]
    3:[]
    4:[1,[1]]
    5:[1,[1]]
    6:[1,'1',[1]]
    7:[5,3,1]
    8:[1,3,5]

通过索引、切片可以修改指定的元素,代码如下:

    #//第3章/3.9.py
    list1=[1,'1',[1]]
    list1[0]=3             #1将0位置的元素修改为3
    print(1,":",list1)
    list1=[1,'1',[1]]
    list1[:2]=[3,3]         #2修改0,1元素
    print(2,":",list1)
    list1=[1,'1',[1]]
    list1[:2]=[6,]                 #3修改、删除
    print(3,":",list1)
    list1=[1,'1',[1]]
    list1[:]=[]                    #4删除所有元素
    print(4,":",list1)
    list1=[1,'1',[3]]
    print(5,":",list1[2][0])      #5索引3

运行结果如下:

    1:[3,'1',[1]]
    2:[3,3,[1]]
    3:[6,[1]]
    4:[]
    5:3

访问列表中的列表,list1[2][0]的第1个索引[2]表示取出list1列表2位置的元素[3],第2个索引[0]表示取出列表[3]的0位置的元素3。