Python数据类型(2)列表和元组

列表和元组

列表和元组都属于序列类型(sequence)。序列对象中的元素都是有序存放的,可以通过编号访问其元素。两者最大的区别在于列表是一种可变序列支持修改其元素,而元组是一种不可变序列,不能修改其元素。


列表

列表(list)是一种可变序列。列表用方括号定义,元素间用逗号隔开。列表的元素可以是任意的数据类型(数字字符串,列表,元组,字典,都可以作为其元素)。

 列表的创建

>>> list1=['a','b','c','d','e','f']
>>> list1
['a', 'b', 'c', 'd', 'e', 'f']
>>> list2=[1,2,3,'a','efg']
>>> list2
[1, 2, 3, 'a', 'efg']
>>> temp = list('beixifen666')       #将字符串转换为列表
>>> temp
['b', 'e', 'i', 'x', 'i', 'f', 'e', 'n', '6', '6', '6']
>>> a=(1,2,3)                        #将元组转换为列表
>>> b=list(a)
>>> b
[1, 2, 3]

这里说明list1的元素与位置编号的关系

正位置编号       0     1     2     3     4     5

列表元素           a     b     c     d     e      f

负位置编号       -6    -5   -4    -3    -2    -1    

列表的基本操作

>>> list1=['a','b','c','d','e','f']
>>> list2=[1,2,3,'a','efg']
>>> list1[5]               #正数索引
'f'
>>> list1[-1]              #负数索引
'f'
>>> list3=list1+list2      #列表相加
>>> list3
['a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3, 'a', 'efg']
>>> list4=[list1,list2]    #列表的嵌套
>>> list4
[['a', 'b', 'c', 'd', 'e', 'f'], [1, 2, 3, 'a', 'efg']]
>>> list4[1][4]            #索引嵌套列表元素
>>> list1[0]=1             #对列表元素修改或者赋值(前面说过列表元素是可变的)
>>> list1
[1, 'b', 'c', 'd', 'e', 'f']
>>> del list1[0]           #删除列表的第一个元素
>>> list1
['b', 'c', 'd', 'e', 'f']

列表对象的基本方法

当我们定义了一个列表时,实际上创建了一个列表对象。对于列表对象,我们可以调用该对象的内置基本方法。

调用对象方法的格式如下:

                                    list.method()

1、添加元素append

append是向结尾添加一个元素。

>>> list1=['a', 'b', 'c', 'd', 'e', 'f']
>>> list1
['a', 'b', 'c', 'd', 'e', 'f']
>>> list1.append('g')                   #append用法
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g']       
>>> list1.append('h','i')               #用append添加多个时会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)

2、添加多个元素extend

extend可以向列表尾部添加多个元素。添加的时候将待添加元素写成序列形式。

>>> list1=['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> list1.extend(['a','b'])        #以列表形式添加多个元素
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'a', 'b']
>>> list1.extend(('a','b'))        #以元组形式添加多个元素
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'a', 'b']
>>> list1.extend('abc')            #以字符串形式添加多个元素
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'a', 'b', 'a', 'b', 'c']
>>> list1.extend(['abc'])          #添加字符串
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'a', 'b', 'a', 'b', 'c', 'abc']
>>> list1.extend('a','b')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: extend() takes exactly one argument (2 given)

3、插入元素insert

insert是向列表中插入元素。格式:list.insert(位置编号,元素)

>>> a = [1,2,3]
>>> a.insert(1,'b')  #在索引为1的位置插入'b'
>>> a
[1, 'b', 2, 3]
>>> b=['c','d']      #在索引为1的位置插入列表b
>>> a.insert(1,b)
>>> a
[1, ['c', 'd'], 'b', 2, 3]

4、计数count

count是统计某个元素在列表中的出现次数。

>>> list1=['a', 'b', 'c', 'd', 'e', 'f']
>>> list1.count('a')
1

5、索引index

index是检测出列表中第一个匹配项的位置。

>>> temp = list('beixifen666')       #将字符串转换为列表
>>> temp
['b', 'e', 'i', 'x', 'i', 'f', 'e', 'n', '6', '6', '6']
>>> temp.index('6')                  #第一个'6' 的索引
8                                    
>>> temp[8]
'6'

6、弹出元素pop

pop是将列表中一个元素删除类似于del。格式为:list.pop(位置编号),当位置编号省缺时,默认弹出列表末尾的元素。

>>> a = [1,2,3]
>>> a.pop(1)
2
>>> a
[1, 3]

7、移除第一个匹配项remove

remove的作用是检索给定的元素是否在列表内,如果在则移除第一个匹配项。格式:list.remove(元素)

>>> a=[1,2,3,1]
>>> a.remove(1)
>>> a
[2, 3, 1]

8、逆转reverse

reverse将列表元素逆序。

>>>a = ['a', 'b', 'c']
>>>a.reverse()
['c', 'b', 'a']

9、排序sort

sort默认排序时,按照升序排列原列表的元素。当出现多种字符时按照:数字→大写字母→小写字母排序。

格式:默认排序:list.sort()       逆序排序:list.sort(reverse=True)

>>> x.sort()              #默认排序
>>> x
['5', 'Acd', 'abc', 'bac']
>>> x.sort(reverse=True)  #逆序排序
>>> x
['bac', 'abc', 'Acd', '5']

元组

元组(tuple)是一种不可变序列类型。元组用圆括号定义,元素间用逗号隔开。再不引起语法错误的前提下,一组用逗号隔开的值,系统默认创建元组。或者说元组的定义在某些情况下可以没有圆括号

元组的基本操作

>>> tuple1=('a','b','c','d')     #圆括号定义元组
>>> tuple1
('a', 'b', 'c', 'd')
>>> tuple2=1,2,'a'               #系统默认定义元组
>>> tuple2
(1, 2, 'a')
>>> x=['bac', 'abc', 'Acd', '5'] #列表转为元组
>>> a=tuple(x)
>>> a
('bac', 'abc', 'Acd', '5')
>>> b=tuple('acbfe')             #字符串转为元组
>>> b
('a', 'c', 'b', 'f', 'e')
>>> tuple2[1]                    #元组元素的引用
2
>>> tuple3=tuple1+tuple2  #元组元素相加
>>> tuple3
('a', 'b', 'c', 'd', 1, 2, 'a')
>>> tuple1[2]=1                  #企图改变元组的元素,元组是不可变的序列因此会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> a=tuple('beixifen')          #元组的分片
>>> a[0:4]
('b', 'e', 'i', 'x')

由于元组是不可变序列因此比起列表会少很多内置方法。元组可以使用index和count方法,用法同列表。


参考文献:秦颖.Python实用教程.北京:清华大学出版社,2016.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值