Python基础(第四章—列表)

在这里插入图片描述
" 你还记得他(她)的忧伤吗 ?"

这篇文章将带我们了解到:

  1. 序列(字符串序列和列表序列)
  2. 列表的常用操作及常用方法
  3. for循环和range函数

1、序列

基本概念

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

序列的分类

  1. 可变序列(序列中的元素可以改变):例如 列表(list)
  2. 不可变序列(序列中的元素不能改变):例如 字符串(str) 元组(tuple)
a = "abc"
a[0] = "b" 
# 利用索引 将 a[0] = "a" 改变是不可以实现的

报错

l = [1,2,3,4,5]
l[3] = 5
#  利用索引 将 l[3] = 4 改变为 5 是可以实现的
print(l)

输出:[1, 2, 3, 5, 5]

2、列表

2.1、切片

切片

  1. 切片是指从现有列表中获得一个子列表
  2. 通过切片来获取指定的元素
  3. 语法:列表[起始位置:结束位置:步长]
  4. 通过切片获取元素时、会包括起始位置的元素、不会包括结束位置的元素

2.2、列表

列表

  1. Python中的一个对象

列表的作用

  1. 列表中可以保存多个有序的数据
  2. 列表是用来存储对象的对象

列表的创建

  1. 通过[ ]来创建一个空列表

列表的类型(list)

list1 = [1,"python",True,None]
print(list1,type(list1))

输出:[1, 'python', True, None] <class "list">

2.2.1、利用索引取出列表中的元素

# 利用索引取出列表中的元素
list1 = [1,"python",True,None]
print([list1[1])

输出:python

2.2.2、查看列表的长度

list1 = [1,"python",True,None]
print(len(list1))

输出:4

2.2.3、创建空的列表

list1 = []
print(list1)

输出:[]

2.2.3、列表常用操作

列表加法和乘法(+、*)

  1. 我们这里认为的二种序列:字符串序列和列表序列
  2. 两种相同的序列才可以进行加法操作
  3. 序列只能和整数相乘
l1 = [1,2,4]
l2 = [4,5,6]
l3 = ['9','10']
l4 = "abc"
print(l1+l2)
print(l1+l3)
print(l1+l4)# l1为列表序列、l4为字符串序列

输出:
	[1, 2, 4, 4, 5, 6]
	[1, 2, 4, '9', '10']
	报错
l1 = "python"
l2 = [1,2,3]
print(l1 * 2)
print(l2 * 2)
print(l1 * 2.3)
print(l2 * 2.3)
print(l1 * l2)

输出:
	pythonpython
	[1, 2, 3, 1, 2, 3]
	报错
	报错
	报错

列表的在与不在(in、not in)

  1. in 用来检查指定元素是否在列表中
  2. not in 用来检查指定元素是否不在列表当中
a = "abc"
print("a" in a) 
print("d" in a)
# 返回值为 True 和 False (布尔值)

输出:
	True
	False

b = [1,2,3]
print(1 in b)

输出:True

列表的最大最小值函数(max、min)

  1. max 用来获取列表中的最大值
  2. min 用来获取列表中的最小值
  3. 且列表里面类型需要相同(str)和(int)
b = [1,2,3]
print(max(b))
print(min(b))

输出:
	3
	1

b = [1,2,3,"4"]
print(max(b))
print(min(b))

输出:报错

b = ["1","2","3","4"]
print(max(b))
print(min(b))

输出:
	4
	1

列表查找函数(index)

  1. 位置用索引表示)
  2. 列表中没有 find 查找
b = [1,2,3]
print(b.index(4))
print(b.index(3))

输出:
	报错
	2	

列表统计元素出现的次数 (count)

b = [1,2,3,3]
print(b.count(1))
print(b.count(3))

输出:
	1
	2

列表删除列表关键字(del)

list1 = [1,2,3,4,5]
del list[-1]
del list[1]
print(list1)

输出:[1, 3, 4]

列表利用切片修改其中数据

  1. 替换的数据需要是序列(字符串序列或列表序列)
  2. 当设置了步长取出了多少数据、替换的时候、就得用多少个
  3. list[0:0] 相当于在序列最前面添加数据
# 序列替换
list1 = [1,2,3,4,5]
list1[0:2] = [2,1]
print(list1)

输出:[2, 1, 3, 4, 5]

# 字符串替换(等量)
list1 = [1,2,3,4,5]
list1[0:2] = "21"
print(list1)

输出:['2', '1', 3, 4, 5]

# 字符串替换(不等量)
list1 = [1,2,3,4,5]
list1[0:2] = "2"
print(list1)

输出:['2', 3, 4, 5]

# 步长为 2 、数据需要 3 个
list1 = [1,2,3,4,5]
list1[::2] = [1,1,1]
print(list1)

输出:[1, 2, 1, 4, 1]

# list[0:0] 相当于在序列最前面添加数据
list1 = [1,2,3,4,5]
list1[0:0] = [1,1,1]
print(list1)

输出:[1, 1, 1, 1, 2, 3, 4, 5]

列表利用切片删除其中数据

list1 = [1,2,3,4,5]
list1[0:2] = []
print(list1)

输出:[3, 4, 5]

list1 = [1,2,3,4,5]
list1[0:2] = ""
print(list1)

输出:[3, 4, 5]

2.2.4、列表的方法

列表在最后的位置插入一个数据(append)

list1 = [1,2,3,4,5]
list1.append(6)
print(list1)

输出:[1, 2, 3, 4, 5, 6]

列表指定在对应位置插入数据(insert)

list1 = [1,2,3,4,5]
list1.insert(1,100)
print(list1)

输出:[1, 100, 2, 3, 4, 5]

列表使用新的列表扩展当前列表(extend)

list1 = [1,2,3,4,5]
list1.extend([6,7,8,9])
print(list1)

输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]

列表根据索引删除元素(pop)

  1. 根据索引删除并返回元素(a = list1.pop())
  2. 如果不传递索引、默认删除最后一个
list1 = [1,2,3,4,5]
list1.pop()
print(list1)

输出:[1, 2, 3, 4]

list1 = [1,2,3,4,5]
a = list1.pop(1)
print(list1)
print(a)

输出:
	[1, 3, 4, 5]
	2

列表删除指定的元素(remove)

list1 = [1,2,3,4,5]
list1.remove(1)
print(list1)

输出:[2, 3, 4, 5]

列表正逆排序(sort)

  1. 默认是正序排列
  2. 一个参数reverse值为True时逆序排列
# 正序
list1 = [1,2,3,4,5]
list1.sort()
print(list1)

输出:[1, 2, 3, 4, 5]

# 逆序
list1 = [1,2,3,4,5]
list1.sort(reverse = True)
print(list1)

输出:[5, 4, 3, 2, 1]

3、for循环遍历

3.1、for循环

一、语法

# 语法
for 变量 in 序列(遍历的规则)
       代码块

二、注意

  1. for循环的代码会执行多次
  2. 序列中有几个元素就会执行几次
  3. 每执行一次会将序列中的一个元素赋值给变量
  4. 我们可以通过变量来获取列表中的元素
  5. 遍历之后不会改变原列表
@
list1 = [1,2,3,4,5]
for i in list1:
	print(i)

输出:
	1
	2
	3
	4
	5
@
list1 = [1,2,3,4,5]
for i in list1:
    i += 1
    print(i)

输出:
	2
	3
	4
	5
	6
@
list1 = [1,2,3,4,5]
for i in list1:
    i += 1
    print(i)
print(list1)

输出:
	2
	3
	4
	5
	6
	[1, 2, 3, 4, 5]

改变原列表(使用空列表)

list1 = [1,2,3,4,5]
list2 = []
for i in list1: #遍历list1中的元素
	i += 1
	list2.append(i)
print(list2)

输出:[2, 3, 4, 5, 6]

3.2、range函数

#语法
range(开始位置,结束位置,步长) 开始位置可以省略、省略即开始位置为0、步长省略为1
range(9) # 相当于range(0,9,1)
print(range(9))
print(list(range(9))) # 强制转换格式

输出:
	range(0, 9)
[0, 1, 2, 3, 4, 5, 6, 7, 8]

4、程序举例

一、现在有 a = [1,2,3,4,5,6] 用多种方式实现列表的反转、并写出推导过程

# 以切片的方式反转列表
a = [1,2,3,4,5,6] 
print(a[::-1])

输出:[6, 5, 4, 3, 2, 1]

# 以sort函数反转列表
a = [1,2,3,4,5,6] 
a.sort(reverse = True)
print(a)

输出:[6, 5, 4, 3, 2, 1]

二、给用户9次机会猜1~10个数字、如果随机的数字与用户输入的数字一致则表示正确、如果不一致则表示错误、最终结果要求用户怎么猜也猜不对

list1 = list(range(1,11))
i = 1
while i < 10:
    num = int(input("请输入1~10的数字:"))
    print("您猜错了、请继续")
    list1.remove(num)
    i += 1
print("正确答案是%s"% list1[0])

三、二个列表 list1 = [11,22,33] 、list2 = [22,33,44]获取内容相同的元素

# 方法一
list1 = [11,22,33]
list2 = [22,33,44]
list3 = list1 + list2
i = 0
while i < 6:
    for i in list3:
        a = list3.count(i)
        if a == 2:
            print(i)

输出:
	22
	33
	22
	33

# 方法二
list1 = [11,22,33]
list2 = [22,33,44]
for i in list1:
	if i in list2:
		print(i)

输出:
	22
	33

四、现在有8位老师、3个办公室、要求将8位老师随机分配到三个办公室

import random
offices = [[],[],[]]
teacher = ["A","B","C","D","E","F","G","H"]

for name in teacher:
    index = random.randint(0,2)      #生成随机数0-2
    offices[index].append(name)      #将老师随机的放入办公室

i = 1
for office in offices:
    print("办公室%d的人数是:%d"%(i,len(office)))
    i=i+1
    for name in office:
        print("%s"%name,end="\t")
    print()
    print("-"*20)
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是我来晚了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值