python列表

列表是Python当中应用最多的一种数据集合,也是最灵活的序列

它是可变对象,其内容可以进行修改,它与字符串不同的地方在于,字符串表示的是文本信息,所以字符串里面只能存储字符相关的数据,然而对于列表而言,列表中可以存储任意数据类型(数字,字符串,布尔类型,浮点数,函数....),当然为了方便我们对列表进行统一的操作和管理,建议在一个列表中存储相同的数据元素

列表用[]表示

[1,2,3,4,5,6,7] 纯整数的列表
["哈哈","嘻嘻","啦啦","嘿嘿"] 纯字符串的列表
[1,2,3,3.14,True,False,max,"字符串"] 表示列表可以存储多种数据类型 但是不方便操作

既然列表是序列的一种,那么列表也支持序列的通用的操作

创建列表 

>>> lst = [1,2,3,4]	# 创建指定元素的列表
>>> print(lst)
[1, 2, 3, 4]
>>> type(lst)	# 查看列表对象的类型
<class 'list'>
>>> lst = [None] * 10	# 创建指定长度的列表 暂时没有内容 None
>>> print(lst)
[None, None, None, None, None, None, None, None, None, None]
>>> list("abcd")	# 通过内置函数list 将其他的序列转换为列表对象
['a', 'b', 'c', 'd']
>>> list(1234)		# 内置函数list 不能将非序列结构转为列表
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> range(1,10,2)	# range函数是用来生成一组数据的
range(1, 10, 2)
>>> r = range(1,10,2)
>>> type(r)
<class 'range'>
>>> lst = list(range(1,10,2))	# 通过内置函数list将range函数生成的数据转为List对象
>>> print(lst)
[1, 3, 5, 7, 9]
>>> lst = []	# 创建一个空列表 (长度为0 没有元素)后期给它添加元素

关于列表可变长的问题

在其他语言当中 尤其是Java和C语言,Python的列表就相当于上述两个语言当中的数组这个概念

数组它一旦创建出来其长度是不可改变的,但是Python的列表它的长度是可以改变的(内容也是可以改变的)

列表的一些特殊的操作

修改元素

>>> lst = [1,2,3,4,5]
>>> lst[1]		# 通过角标来获取一个元素
2
>>> lst[1] = 6	# 通过角标来修改一个元素 
>>> lst
[1, 6, 3, 4, 5]
>>> lst[0:4] = [9,8,7] # 通过切片修改一段元素(被修改的元素个数不一定和新来的元素个数相同)
>>> lst
[9, 8, 7, 5]

删除操作

>>> del lst[0] # 通过角标删除列表中某一个元素
>>> lst
[8, 7, 5]
>>> del lst[0:3] # 通过切片删除列表中一段元素
>>> lst
[]

列表的函数

同字符串一样,列表也拥有自己的函数,调用的方式就是通过某一个列表对象来调用

下面这些方法,如果有添加、修改、调整、删除的操作,都是在列表对象自身上进行的!

列表对象.函数()

  • append(x):将数据对象x添加到列表的末尾

>>> lst = [1,2,3,4]
>>> lst.append(5)
>>> lst
[1, 2, 3, 4, 5]

clear():清空当前列表对象的内容

>>> lst.clear()
>>> lst
[]

copy():复制一份同样的列表(做一个副本列表对象并返回)

>>> lst1 = [1,2,3,4]	# 创建列表对象 将列表对象的地址给lst1变量
>>> lst2 = lst1			# 将lst1变量存储的地址给lst2 所以目前为止 lst1和lst2存储的都是同一个对象的地址
>>> id(lst1)
2192471564744
>>> id(lst2)
2192471564744
>>> lst1[0] = 6			# lst1修改列表对象的内容
>>> lst2				# lst2再去访问列表对象时 内容已经被改变了
[6, 2, 3, 4]			# lst1和lst2其实就是一个玩意 这个不叫复制

>>> lst2 = lst1.copy()	# 将lst1所对应的列表对象进行复制 重新创建新的列表对象 该新的列表对象的内容和原先的列表一致的 并把新列表对象的地址给了lst2
>>> lst2				# lst1和lst2分别指向两个不同的列表对象 只不过这两个列表对象的内容一样而已
[6, 2, 3, 4]
>>> lst1[0] = 666		# 修改lst1列表对象的内容
>>> lst1
[666, 2, 3, 4]
>>> lst2				# 修改lst1并不影响lst2
[6, 2, 3, 4]

count(x):统计x数据在列表中出现的次数

lst =[1,1,1,0,0,0,0,0]
lst.count(0)
5

extend(x):和append函数一样都是添加内容,但是extend函数的参数x必须是序列,将x序列中的内容添加到当前列表中

>>> lst1 = [1,2,3]
>>> lst2 = [4,5,6]
>>> lst1.extend(lst2) # 将lst2的内容添加在lst1的表尾
>>> lst1
[1, 2, 3, 4, 5, 6]

>>> lst1.extend(666)	# extend函数的参数必须是一个序列
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

>>> lst1
[1, 2, 3, 4, 5, 6]
>>> lst1.append(lst2)	# append是将参数x当成一个元素添加在当前列表的表尾的!
>>> lst1
[1, 2, 3, 4, 5, 6, [4, 5, 6]]
>>> lst1[6]		# 注意 [4,5,6]这个列表对象被当做是一个元素在lst1中
[4, 5, 6]

index(x):查找元素x在列表中第一次出现的角标(从左到右),如果找不到则报错!

>>> lst = [1,2,3,4,5,6]
>>> lst.index(6)
5
>>> lst.index(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 10 is not in list

  pop():当成栈来看,删除最后一个元素,相当于出栈操作,append理解为进栈操作

>>> lst
[1, 2, 3, 8, 4, 5]
>>> lst.pop()
5
>>> lst
[1, 2, 3, 8, 4]

remove(x):删除指定元素x,从左到右第一次出现,如果不存在则报错

>>> lst = [1,2,3,4,4,5,6]
>>> lst.remove(4)
>>> lst
[1, 2, 3, 4, 5, 6]
>>> lst.remove(4)
>>> lst
[1, 2, 3, 5, 6]
>>> lst.remove(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值