Python第七讲

本文详细介绍了Python列表的通用操作,包括加法合并、乘法复制、元素存在性检查、长度计算、最大最小值查找等。同时讲解了如何修改列表,如通过索引、del语句和切片进行修改。还探讨了列表的各种方法,如添加元素、清空、删除和排序。此外,提到了for循环遍历列表和range函数在循环中的应用。最后布置了猜数字和查找相同元素的作业。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表

通用操作

运算结果
list1 + list2list1与list2相拼接
list * n(正整数) 或 n(正整数) * list相当于list与自身进行n次拼接
x in list如果list中的某项等于x则结果为True,否则为False
x not in list如果list中的某项等于x则结果为False,否则为True
len(list)list的长度
min(list)list的最小值
max(list)list的最大值
list.index(x[,start[,end]])x在list中首次出现的索引号,start和end为可选参数,指定索引的范围)
list.count(x)x在list中出现的总次数
  • 加法运算 —— 将多个列表合并(拼接)为一个列表
> lst = [1,2,3] + [4,5,6]
> [1,2,3,4,5,6]
  • 乘法运算 —— 将列表重复指定的次数(复制)
> lst = [1,2,3]*[2,3,4]  # 错误的示范及报错内容
> '''
> File "<stdin>", line 1, in <module>
> TypeError: can't multiply sequence by non-int of type 'list'
> '''
> lst = [1,2,3]*2
> [1, 2, 3, 1, 2, 3]
  • in —— 用来检查指定元素是否存在于列表中,如果在返回True,如果不在返回False
> a = [1,2,3]
> 4 in a
> False
> 3 in a
> True
  • not in —— 用来检查指定元素是否存在于列表中,如果不在返回True,如果在返回False
> a = [1,2,3]
> 4 not in a
> True
> 3 not in a
> False
  • len(list)函数 —— 列表长度
> a = [1,2,3]
> len(a)
> 3
  • min(list)函数 —— 列表内最小值
> a = [1,2,3]
> min(a)
> 1
  • max(list)函数 —— 列表内最大值
> a = [1,2,3]
> max(a)
> 3
  • list.index(x[,start[,end]])方法 —— 获取x在列表中首次出现的位置
> a = [1,2,3,4,5,6,1,2,3,4,5,6]
> list.index(3)
> 2
> list.index(3,3) # 结束位置不写为起始位置到最后一个元素
> 8
> list.index(3,3,8) # 如果未找到则报错:值错误
'''
File "<stdin>", line 1, in <module>
ValueError: 3 is not in list
'''
  • list.count(x) —— 获取x在列表中出现的总次数
> a = [1,2,3,4,5,6,1,2,3,4,5,6]
> a.count(4)
> 2

修改列表

修改列表的方法含义
list[x] = y通过索引x修改列表
关键字del删除元素,方法:del list[x]删除索引x元素
list[a:b] = [x,y,…]通过切片方式修改列表(a到b的元素数量等于替换元素数量)
list[a:b] = [x,y,z,…]通过切片方式修改列表(a到b的元素数量不等于替换元素数量)
list[a : b : c] = [x,y,…]通过切片方式修改列表(增加步长),如设置步长,序列中的元素个数必须和切片的元素个数保持一致
list[a:b] = []通过切片方式删除元素
  • 通过索引修改列表
> # list[x] = y 当x在列表范围内,修改列表正常
> a = [1,2,3,4,5,6]
> a[2] = 7
> [1,2,7,4,5,6]

> # list[x] = y 当x在列表范围外,会报错:索引错误
> a = [1,2,3,4,5,6]
> a[6] = 7
> '''
> File "<stdin>", line 1, in <module>
> IndexError: list assignment index out of range
> '''
  • 通过del删除元素
> # 删除单个元素
> a = [1,2,3,4,5,6]
> del a[3]
> [1,2,3,5,6]

> # 利用切片删除多个元素
> del a[:2]
> [3,5,6]

> # 利用切片及步长删除多个元素
> a = [1,2,3,4,5,6]
> del a[1:5:2]
> [1,3,5,6]
  • 通过切片方式修改列表
> # list[a:b] = [x,y,...]
> a = [1,2,3,4,5,6]
> a[:2] = [7,8]
> [7,8,3,4,5,6]

> # list[a:b] = [x,y,z,...]
> a = [1,2,3,4,5,6]
> a[:2] = [7,8,9]
> [7,8,9,3,4,5,6] # 如果替换元素大于原有元素,多余的元素会依次往后顺延

> # list[a:b] = [x,y,z,...]
> a = [1,2,3,4,5,6]
> a[:2] = [7]
> [7,3,4,5,6] # 如果替换元素小于原有元素,原有被切片的元素变成替换的元素

> # list[a:b] = [x,y,z,...] a等于b
> a = [1,2,3,4,5,6]
> a [2:2] = [7]
> [1,2,7,3,4,5,6] # 如果切片的起始和结束一样,在切片位置前插入元素

> # list[a:b:c] = [x,y,...] 
> a = [1,2,3,4,5,6]
> a[::2] = [7] # 报值错误:设置步长,序列中的元素个数必须和切片的元素个数保持一致
> '''
> File "<stdin>", line 1, in <module>
> ValueError: attempt to assign sequence of size 1 to extended slice of size 3
> '''
> a[::2] = [7,8,9]
> [7,2,8,4,9,6]

> # list[a:b] = [] 当赋值为空列表时
> a = [1,2,3,4,5,6]
> a[1:4] = []
> [1,5,6]

列表的方法

方法含义
list.append(x)向列表的最后添加一个元素x
list.insert(x,y)向列表的x位置添加一个元素y
list.extend([x,y,…]) 或 list1 += list2扩展当前的序列,需要使用一个序列作为参数,将该序列中的元素添加到当前序列中(向列表的最后添加多个元素)
list.clear()清空列表(等同于del list[:])
list.pop(x)删除x位置的元素,并返回(如果不传入x值,默认删除最后一个元素)
list.remove(x)根据指定值x删除第一个出现x值的元素
list.reverse()反转列表(等同于 list[::-1])
list.sort()将列表排序(默认升序)
  • 向列表的最后添加单个元素
> a = [1,2,3,4,5,6]
> a.append(7)
> [1,2,3,4,5,6,7]
  • 向列表指定位置添加单个元素
> a = [1,2,3,4,5,6]
> a.insert(2,7)
> [1,2,7,3,4,5,6]
  • 向列表的最后添加多个元素
> a = [1,2,3,4,5,6]
> a.extend([7,8])
> [1,2,3,4,5,6,7,8]

> a = [1,2,3,4,5,6]
> a.extend(7,8) # 只能添加一个参数,且是序列
> '''
> File "<stdin>", line 1, in <module>
> TypeError: extend() takes exactly one argument (2 given)
> '''

> a = [1,2,3,4,5,6]
> a.extend(7) # 只能添加一个参数,且是序列
> '''
> File "<stdin>", line 1, in <module>
> TypeError: 'int' object is not iterable
> '''
  • 清空列表
> a = [1,2,3,4,5,6]
> a.clear()
> []

> a = [1,2,3,4,5,6]
> del a[:]
> []
  • 根据索引值删除元素,并返回值
> a = [1,2,3,4,5,6]
> a.pop(2)
> 3

> a = [1,2,3,4,5,6]
> b = a.pop()
> print (b)
> 6
> print(a)
> [1,2,3,4,5]
  • 根据指定值删除元素
> a = [1,2,3,4,5,6]
> a.remove(3)
> [1,2,4,5,6]

> a = [1,2,3,1,2,3]
> a.remove(2) # 根据指定值删除第一个出现的元素
> [1,3,1,2,3]
  • 翻转列表
> a = [1,2,3,4,5,6]
> a.reverse()
> [6,5,4,3,2,1]

> a = [1,2,3,4,5,6]
> a[::-1]
> [6,5,4,3,2,1]
  • 列表排序
> a = [1,2,3,1,2,3]
> a.sort() # 默认升序排列
> [1,1,2,2,3,3]

> a = [1,2,3,1,2,3]
> a.sort(reverse = True) # 参数内添加reverse = True,将列表变为降序排列
> [3,3,2,2,1,1]

for循环 —— 遍历

  • 概念 —— 将任意数据类型中的元素提取出来
  • 语法:
    for 变量 in 序列(遍历的规则):
         代码块
    • for循环的代码会执行多次,序列中有几个元素就执行几次
    • 每执行一次就会将序列中的元素赋值给变量,通过变量来获取序列中的元素

range函数

  • 参数 —— range(start,end,step)
> print(range(5)) # ---> range(0,5)
> print(range(0,5))  # ---> range(0,5)
> print(range(0,5,1)) # ---> range(0,5)
> # start 默认为0 (必须为整数)
> # end 不包括结束(必须为整数):print(range(0,5))结果为[0,1,2,3,4]
> # step 默认为1(可以是除零外的整数,如果是负数,结果为空:list(range(0,10,-1))结果为[])
> print(list(range(0,10,0))
> '''
> File "<stdin>", line 1, in <module>
> ValueError: range() arg 3 must not be zero
> '''
  • 主要使用方法 —— 配合for循环来执行循环的次数,参数中传递几就循环几次

作业

1、猜数字

lst = list(range(1,11))
count = 9
for i in range(1, 10):
    user_input = int(input('请输入1-10之间的任意数字:'))
    lst.remove(user_input)
    if user_input not in lst:
        print('猜错了,请重新输入,还有', count - i, '次机会')

2、获取相同元素

lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
lst_samevalue = []
for i in lst1:
    if i in lst2:
        lst_samevalue.append(i)
print(lst_samevalue)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值