Python基础 -- Task03. 列表与元组

  1. 列表
    列表是一种可变序列数据类型。列表将数据元素放在一对方括号之间,并使用逗号作为数据元素的分割。一个列表中的数据可以是基本数据类型,也可以是组合数类型或自定义数据类型。例如下面的列表都是合法的列表对象:
[1,2,4,5,6]
[1.'中国移动','10086',True]
['日期','中国',[2019,10,22]]
[1,[1,2],(3,5),{"a":4,"b":5}]


创建列表
使用方括号和逗号进行创建,或者使用list()函数创建。

>>> list1=[]                     #产生一个空列表
>>> list1
[]
>>> list2=[1,2,3]
>>> list2
[1, 2, 3]
>>> list3=['python','java','c++']
>>> list3
['python', 'java', 'c++']
>>> list4=list()                #产生一个空列表,等价于list1=[]
>>> list4
[]
>>> list5=list(range(1,10,2))   #将range函数产生的序列变为列表
>>> list5
[1, 3, 5, 7, 9]
>>> list6=list('华北电力大学')   #每个字符作为列表中的一个数据元素
>>> list6
['华', '北', '电', '力', '大', '学']
>>> 

使用列表推导式创建列表

>>> list1=[x*x for x in range(1,5)]
>>> list1
[1, 4, 9, 16]
>>> list2=[i for i in list1 if i%2==0]
>>> list2
[4, 16]
>>> 


访问列表
列表是一个有序序列,可以通过序号访问列表中的元素。和字符串类似,列表的序号也是一个整数,并且可以由正向或逆向访问列表

       正向索引,从零开始递增
    0    1     2     3    4     5
 ['华''北''电''力''大''学']
   -6   -5    -4   -3    -2    -1
       逆向索引,从-1开始递减

列表分片

切片的通用写法是 start : stop : step

>>> list1=['a','b','c','d','e','f','g']
>>> list1[0]
'a'
>>> list1[2:4]
['c', 'd']
>>> list1[-2]
'f'
>>> list1[4:]
['e', 'f', 'g']
>>> list1[:-4]
['a', 'b', 'c']
>>> list1[1:5:2]
['b', 'd']
>>> 

如果一个列表中的列表元素也是由列表构成的,那就构成了类似矩阵的二维结构。
访问二维列表的格式如下:

<列表名>[<索引1>][<索引2>]
>>> a=[1,2,3,4]
>>> b=[5,6,7,8]
>>> c=[9,10,11,12]
>>> list=[a,b,c]
>>> list[1][2]
7
>>> 


修改列表元素
修改列表元素可以用赋值语句,语法格式如下:

<列表名>[<索引>]=<>
>>> list1=[1,2,3,4,5]
>>> list1[0]='a'
>>> list1[-1]='b'
>>> list1
['a', 2, 3, 4, 'b']
>>> list1[1:3]=['c','d']
>>> list1
['a', 'c', 'd', 4, 'b']
>>> 


添加列表元素

  • append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list 中保持着原结构类型。
>>> list1.append('a')
>>> list1
[1, 2, 3, 4, 5, 6, 'a']
  • extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
>>> list2=[1,2,3,4]
>>> list2.extend(['a','b','c'])
>>> list2
[1, 2, 3, 4, 'a', 'b', 'c']
  • insert(index, obj) 在编号 index 位置前插入 obj。
>>> list3.insert(1,'a')
>>> list3
[1, 'a', 2, 3, 4, 5]
>>> list3.insert(2,['b','c'])
>>> list3
[1, 'a', ['b', 'c'], 2, 3, 4, 5]

⑤删除列表元素
删除列表元素通常可以使用remove()函数、pop()函数或者del语句进行操作。

  • remove()函数用来按值删除列表中的列表元素
    语法格式如下
<列表名>.remove(<>)
>>> list1=[1,2,3,4,5]
>>> list1.remove(2)
>>> list1
[1, 3, 4, 5]
  • pop()函数移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
<列表名>.pop(<index>)
>>> list1
[1, 3, 4, 5]
>>> list1.pop()
5
>>> list1.pop(0)
1
>>> list1
[3, 4]
  • del语句可以按索引序号删除列表中的列表元素
>>> list1=[1,2,3,4,5]
>>> del list1[1]
>>> list1
[1, 3, 4, 5]
>>> del list1[:2]
>>> list1
[4, 5]
>>> del list1                     #删除列表
>>> list1                         #删除列表后,再使用列表,将出现“未定义”的错误
Traceback (most recent call last):
  File "<pyshell#109>", line 1, in <module>
    list1
NameError: name 'list1' is not defined
>>> 

2.元组
元组和列表类似,但元组的元素是不可变的,元组一旦创建,不可以修改其元素,也不能添加或删除元素。

创建元组
创建一个元组可以使用一对小括号,再小括号内用逗号分隔元组元素,或者使用tuple()函数进行创建。

>>> tup1=()
>>> tup1
()
>>> tup2=(1,2,3,4,5)
>>> tup2
(1, 2, 3, 4, 5)
>>> tup3=('python','c++','java','VB','Perl')
>>> tup3
('python', 'c++', 'java', 'VB', 'Perl')
>>> tup4=tuple()           #产生一个空元组,等价于tup1=()
>>> tup4
()
>>> tup5=tuple(range(1,10,2))
>>> tup5
(1, 3, 5, 7, 9)
>>> tup6=tuple("华北电力大学")
>>> tup6
('华', '北', '电', '力', '大', '学')
>>> tup7=((1,2,3),('a','b','c'),('java','VB','Perl'))
>>> tup7
((1, 2, 3), ('a', 'b', 'c'), ('java', 'VB', 'Perl'))

使用小括号创建元组时,小括号也可以省略,例如:

>>> tup=1,2,3,4
>>> tup
(1, 2, 3, 4)

像列表一样,元组也可以使用推导式生成,语法也近似,只不过不用中括号而用小括号

>>> q=(x**2 for x in range(1,10))     #利用推导式产生生成器q
>>> q                                 #访问q会提示在某地址有生成器
<generator object <genexpr> at 0x0000022672D67228>
>>> next(q)                           #使用next()函数访问生成器中第一个元素
1
>>> next(q)                           #使用next()函数继续向下访问生成器中元素
4
>>> next(q)
9
>>> tuple1=tuple(q)                   #使用tuple()函数将生成器中没访问的元素生成为元组
>>> tuple1
(16, 25, 36, 49, 64, 81)
>>> 
p=(x**2 for x in range(1,10))
>>> tup=tuple(p)
>>> tup
(1, 4, 9, 16, 25, 36, 49, 64, 81)


访问元组
元组一旦创建,不可以修改其元素,也不能添加或删除元素。可以通过切片访问为列表增加或删除元素,但元组不可以。访问一个元组和访问列表的方法类似。例如:

>>> tup=(1,2,3,4,5,6,7,8)
>>> tup[1]
2
>>> tup[3:6]
(4, 5, 6)
>>> tup[-1]
8
>>> tup[:-5]
(1, 2, 3)

如果一个元组中的元素也是有列表和元组等构成,也会构成二维结构。可以采用和访问二维列表的方式访问二维元组。虽然元组不可改变,但如果元组的元素是列表等可变元素,该列表是可以改变的。例如:

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=(7,8,9)
>>> d=(a,b,c)                     #元组由两个列表一个元组组成
>>> d
([1, 2, 3], [4, 5, 6], (7, 8, 9))
>>> d[1]=[10,20,30]              #修改元组元素,会产生错误,因为元组是不可变的
Traceback (most recent call last):
  File "<pyshell#153>", line 1, in <module>
    d[1]=[10,20,30]
TypeError: 'tuple' object does not support item assignment
>>> d[1][0]=10                  #修改1号元组元素中的0号元素
>>> d[1][1]=20                  #修改1号元组元素中的1号元素
>>> d[1][2]=30                  #修改1号元组元素中的2号元素
>>> d
([1, 2, 3], [10, 20, 30], (7, 8, 9))
>>> d[2][0]=70                 #修改2号元组元素中的0号元素,错误
Traceback (most recent call last):
  File "<pyshell#158>", line 1, in <module>
    d[2][0]=70
TypeError: 'tuple' object does not support item assignment


解压元组

  • 解压(unpack)一维元组(有几个元素左边括号定义几个变量)
>>> t = (1, 10.31, 'python')
>>> (a, b, c) = t
>>> t
(1, 10.31, 'python')
  • 解压二维元组(按照元组里的元组结构来定义变量)
>>> t = (1, 10.31, ('OK', 'python'))
>>> (a, b, (c, d)) = t
>>> t
(1, 10.31, ('OK', 'python'))
  • 如果你只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量。
>>> t = (1, 2, 3, 4, 5)
>>> (a,b,*rest,c)=t
>>> (a,b,c)
(1, 2, 5)
>>> rest
[3, 4]
  • 如果你根本不在乎 rest 变量,那么就用通配符「*」加上下划线「_」,例子如下:
>>> t = (1, 2, 3, 4, 5)
>>> a, b, *_ = t
>>> a,b
(1, 2)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值