Python小白的进阶之路(六):列表

1. 序列(sequence)

1.1 基本概念

  • 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
  • 数据结构指计算机中数据存储的方式

1.2 序列的分类

  • 可变序列(序列中的元素可以改变):列表(list);字典(dict) …
  • 不可变序列(序列中的元素不能改变):字符串(str);元组(tuple)…

2. 列表(list)

  • 列表是Python中的一个对象
  • 列表的作用
    • 列表中可以保存多个有序的数据
    • 列表是用来存储对象的对象

2.1 列表的使用

  • 列表的创建:通过[]来创建一个空列表

2.2 切片

  • 切片是指从现有列表中获得一个子列表
  • 通过切片来获取指定的元素
  • 语法: 列表[起始 : 结束 : 步长]
    list[start:end:step]
  • 冒号分割索引,start代表起点索引,end代表结束点索引,step为步长默认为1(可以省略不写)。
  • 省略start表示以0开始,省略end表示到列表的结尾。
  • 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
  • 起始位置和结束位置的索引可以不写
    • 如果省略结束位置, 则会从当前的开始位置一直截取到最后
    • 如果省略开始位置, 则会从第一个元素截取到结束的元素,但是不包括结束的元素
    • 如果开始位置和结束位置都省略, 则则会从第一个元素开始截取到最后一个元素
  • 注意:
    • 区间是左闭右开
    • 步长不能是0,但可以是是负数。如果提供的是负整数下标,则从列表的最后开始往头部查找。例如:-1表示最后一个元素,-3表示倒数第三个元素。
>>> l3 = ['a','b','c','d','e','f']
>>> l3[1]							# 取'b'					注意:index默认从0开始
'b'
>>> l3[2]							# 取'c'
'c'
>>> l3[1:3]							# 取['b', 'c']			注意:左闭右开
['b', 'c']
>>> l3[:3]							# 取['a', 'b', 'c']		注意:start不写默认从头开始
['a', 'b', 'c']
>>> l3[2:]							# 取['c', 'd', 'e', 'f']	注意:end不写默认到最后			
['c', 'd', 'e', 'f']
>>> l3[:]							# 取全部			
['a', 'b', 'c', 'd', 'e', 'f']
>>> l3[::2]							# 取['a', 'c', 'e']		注意:步长为2
['a', 'c', 'e']
>>> l3[::-1]						# 逆序		
['f', 'e', 'd', 'c', 'b', 'a']

3. 通用操作

  • +*
    • + 可以将两个列表拼接成一个列表
    • * 可以将列表重复指定的次数
    • (注意2个列表不能够做乘法,要和整数做乘法运算)
# 语句 							结果 								
[1, 2, 3] + [4, 5, 6] 		   # [1, 2, 3, 4, 5, 6] 				
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1.__add__(l2))  		   # 底层调用了__add__方法

['Hi!'] * 4 		   		   # ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 	    
l1 = [1, 2, 3]
print(l1.__mul__(3))
  • in 和 not in
    • in用来检查指定元素是否在列表当中
    • not in 用来检查指定元素是否不在列表当中
3 in [1, 2, 3] 		# True 		   
l1 = [1, 2, 3]
print(l1.__contains__(1))
#元素存在于列表中
  • len() 获取列表中元素的个数
  • max() 获取列表中最大值
  • min() 获取列表中最小值
  • list.index(x[, start[, end]])
    • 第一个参数 获取指定元素在列表中的位置
    • 第二个参数 表示查找的起始位置
    • 第三个参数 表示查找的结束位置
  • list.count(x) 统计指定元素在列表中出现的个数

4. 修改列表

  • 通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列)
  • 当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致
  • 通过切片来删除元素
    • del list[起始 : 结束]
    • list = []
>>> lis = ["a", "b", "c"]
>>> del lis[0]      # 根据索引删除

5. 列表的方法

列表方法作 用
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(key=None, reverse=False)对原列表进行排序,True反序;False正序
list.clear()清空列表
list.copy()复制列表
>>> lis
['b', 'c']
>>> lis.remove("b") # 直接根据值进行删除
>>> lis
['c']

>>> li = [1,2,3,4,5,2,1,3,1]
>>> li.reverse()			# 将列表反转 修改本身 *IN PLACE*
>>> li
[1, 3, 1, 2, 5, 4, 3, 2, 1]

>>> li.sort()				# 排序,默认升序 L.sort(key=None, reverse=False)
>>> li
[1, 1, 1, 2, 2, 3, 3, 4, 5]

>>> li.sort(reverse=True)	# reverse=True 降序
>>> li
[5, 4, 3, 3, 2, 2, 1, 1, 1]

>>> li = [1,2,3]
>>> li.append([3,3])
>>> li
[1, 2, 3, [3, 3]]

>>> li = [1,2,3,[3,3]]
>>> li.count(3) 
1

>>> li = [1,2,3]
>>> li.extend([4,5])   
>>> li
[1, 2, 3, 4, 5]

>>> li = [1,2,3,2,3]
>>> li.index(3) 
2

>>> li = ['happy','year']
>>> li.insert(1,'new')	
>>> li
['happy', 'new', 'year']

>>> li = [1,2,3]
>>> li.clear() 
>>> li
[]

6. 遍历列表

6.1 通过for循环来遍历列表

  • 语法
for 变量 in 序列(遍历的规则):
    代码块
  • 注意:
    • for循环的代码块会执行多次,序列中有几个元素就会执行几次。
    • 每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
a = [1,2,3,4,5,6]
for i in a:            		 # 遍历每一个元素本身
    print(i)

for i in range(len(a)):    	 # 遍历列表的下标,通过下标取值
    print(i, a[i])

x = 9
if x in a:      			 # 进行是否属于列表成员的判断。该运算速度非常快。
    print("True")
else:
    print("False")

6.2 range(start, stop[, step])

参数说明

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值