Grundstufe - 6.liste
Grundstufe - 6.liste)
一、列表
- 列表的表示方式:
- 变量 = [元素、元素、元素]
- 列表本身也是一个对象:存储对象的对象
- 拓展:len()函数
- len()函数可以返回对象(列表)的长数(个数)
- 代码实例:
list1 = [12, 'python', True, None,[1,2.3]]# 排列次序:0,1,2,3、、、、也可以取负数,倒着读取。
print(list1)
print(list1[4])
print(len(list1))
print(list1[-1])
二、切片
- 切片:切片是指在现有序列中取出一个子序列,我们可以通过切片获取
- 语法:list[起始位置:结束位置:步长] 切片下标可以为赋值,为左闭右开区间,步长默认为1
- 默认语法:[0:最后:1]-----取全部
- 代码实例:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
print(hero[0:2])
- 注:切片不会影响原来的序列,则会生成新的列表
- 更改步长:
print(hero[-1:-3:-1])
print(hero[-3:-1])
三、修改列表
3.1 索引
- 语法:变量[ 下标 ] = 与原有列表相同的元素
- 语法实例:
代码1:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公',[[1,2,3],2,3]]
hero[1] = '郭襄'
print(hero)
代码2:
str1 = 'python'
str1 = list(str1)
str1[1] = 'j'
# str1 = str(str1)
print(str1)
注:[ ]为索引号,索引号中写出列表下标
- 拓展:
del list[ ]删除关键字
语法:del list[索引号]
实例:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公',[[1,2,3],2,3]]
del hero[1]
print(hero)
del hero[5][0][2]
print(hero)
四、列表的修改方法
- append()向列表的最后一位添加元素、
语法:list.append()
实例:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.append('郭子仪')
print(hero)
- insert()向列表中指定位置插入一个元素(第一个参数是下标,第二个参数是元素)
- 语法:list.insert()
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.insert(2,'郭子仪')
print(hero)
- extend()在最后添加新的序列
- 语法:list.extend()
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.extend(['郭襄','郭子仪'])
print(hero)
- clear()清空列表
- 语法:list.clear()
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.clear()
print(hero)
- pop()列表删除
- 语法:list.pop()
- 括号内的数值为列表中元素的下标
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
result = hero.pop(1)
print(result,hero)
- remove()删除指定元素
- 语法: list.remove()
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.remove('杨过')
print(hero)
- reverse() 列表反转
- 语法:hero.reverse()
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
hero.reverse()
print(hero)
- sort()对列表的元素进行排序,默认是升序
- 语法:list.sort()
a = list('iuhdlvibsdkjvbigbviulwebcvlisbdcuilhblihv')
a.sort()
print(a)
五、for循环与range函数
5.1 for循环
- 作用:遍历容器内的元素
- 语法:
for 变量 in 序列:
代码块
代码实例:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
for i in hero:
print(i)
5.2 range函数
- 作用:取数区间内元素到元素减一的所有元素
- 语法:range(开始位置,结束位置,步长)# 左闭右开区间
代码实例:
for i in range(9):
print(i)
六、通用操作
- 加法乘法操作
a = [1,2,3]+[4,5,6]
print(a)
a = [1,2,3]*2
print(a)
- in 与 not in 操作
- in :检测元素是否在列表内
- not in :检测元素不在列表内
- 代码实例:
a = [1,2,3]
print(1 in a)
print(4 not in a) # 字符串可以用in 或者 not in
- max()取最大值
- min()取最小值
代码:
# max() # 取最大值
print(max([1,2,3,4,5]))
# min() # 取最小值
print(min([1,2,3,4,5]))
- list.index(‘数据’)返回下标索引
代码:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公']
print(hero.index('杨过')) # 返回下标索引
- list.count(‘元素名’) 获取指定元素在列表中的数量
- 代码:
hero = ['郭靖','杨过','黄蓉','欧阳锋','洪七公','洪七公','洪七公','洪七公']
print(hero.count('洪七公'))
七、作业
作业一:
'''
现在有8位老师,三个办公室,要求8位老师随机分配在三个办公室中
'''
代码:
import random # 导入random模块
# 分析数据:
# 1.需要定义一个列表classroom(教室),三个教室,分配八个老师。列表嵌套。
classroom = [[],[],[]]
# 2.定义老师列表
teacher = ['A','B','C','D','E','F','G','H']
i = 0
for i in teacher:# 遍历老师列表
n = random.randint(0, 2) # 随机生成范围内的整数并赋值给n
classroom[n].append(i) # append()将老师列表内的数据放置在classroom列表内,将随机数n追加在classroom列表内
k = 1 # k分别是办公室1 2 3
for j in classroom:
print(f'办公室{k}的人数是{len(j)}人,',end="") #len()访问列表长度,即列表中数据的个数
print(f'老师分别是')
for i in j: #打印每个办公室老师的名字
print(i)
k += 1
作业二:
'''
给用户9次机会猜1-10个数字随机来猜数字。如果随机的数字和用户输入的数字一致,
则表示正确,如果不一致则表示错误,最终结果要求用户怎么猜都不对。
'''
代码:
# 分析过程:
# 1.设置电脑随机数区间
while True:
print('欢迎大家来到怎么猜都不对的猜数小游戏')
for com in range(11,21):
computer = com
# print(computer)
# 2.设置玩家随机数区间
man = int(input('请输入1到10:'))
if man > 10:
print('输入区间为1到10,你超了!')
elif man == computer:
print('恭喜你回答正确!')
else:
print('哎呀太难了!怎么还不对啊?')
作业三:
'''
有两个列表lst1 = [11,22,33]、lst2 = [22,33,44]获取内容相同的元素
'''
代码:
# 分析过程:
# 1.通过通过len()函数返回列表中元素的长度(数量:3)
# 2.通过for in:函数遍历range()函数中的元素(因为数量为3,所以遍历三次)
lst1 = [11,22,33]
lst2 = [22,33,44]
for l1 in range(len(lst1)):
for l2 in range(len(lst2)):
# 3.通过条件判断对比两次遍历元素,相同输出
if lst1[l1] == lst2[l2]:
print(lst1[l1])
作业四:
'''
现在有a = [1,2,3,4,5,6]不通过函数的形式实现列表的反转([6,5,4,3,2,1])并写出拖到过程
'''
代码:
# 分析过程:
# 通过 list.reverse()
# 代码1:
a = [1,2,3,4,5,6]
a.reverse()
print(a)
# 代码2:
li =[1, 2, 3, 4, 5, 6]
a = list(reversed(li)) #list是列表的意思
print (a)