python第六讲 列表

01-序列

  1. 基本概念
    • 序列是一种数据结构
    • 数据结构指计算机中存储数据的方式
  2. 分类
    • 可变序列 list
    • 不可变序列 str 、tuple

02-列表list

# 创建空列表
list0 = []

list1 = [1, 2, 3, 4]
list2 = [1, 'abc', [], None, True]
print(list2, type(list2))
# 运行结果[1, 'abc', [], None, True] <class 'list'>

03-列表的切片

str[起始索引位置:结束索引位置:步长]

list1 = ['张三', '李四', '王五', '小明', '猫叔']
print(list1[1: 4])
# 运行结果 ['李四', '王五', '小明']

# 根据索引号来取
print(list1[2])
# 运行结果 王五
print(list1[2][-1])
# 运行结果 五

print(list1[::0])
# 运行结果 ValueError: slice step cannot be zero
print(list1[::3])
# 运行结果 ['张三', '小明']
print(list1[1::6])
# 运行结果 ['李四']
print(list1[:2:6])
# 运行结果 ['张三']

04-通用操作

# 加法
a = [1, 2, 3] + [3, 4, 5]
print(a)
# 运行结果 [1, 2, 3, 3, 4, 5]
# 乘法
a = [1, 2, 3] * 2

# in 和 not in 检测是否在里面
list1 = ['张三', '李四', '王五', '小明', '猫叔']
print('张三' in list1)
# 运行结果 True

# len()、 max()、 min()
print(len(list1))
# 运行结果 5
# list.index(x[,start[,end]])
print(list1.index('李四'))
# 运行结果 1

# list.count(x)统计元素出现个数

05-修改列表

  • 通过切片修改
list1 = ['张三', '李四', '王五', '小明', '猫叔']
list1[1] = 'a'
print(list1)
# 运行结果 ['张三', 'a', '王五', '小明', '猫叔']

list1[4::] = 'abc'
print(list1)
# 运行结果 ['张三', '李四', '王五', '小明', 'a', 'b', 'c']

list1[4::] = 123
# 运行结果 TypeError: can only assign an iterable
list1[0:0] = "123"
print(list1)
# 运行结果  ['1', '2', '3', '张三', '李四', '王五', '小明', '猫叔']

# 删除功能
del list1[3]
  • 设置了步长,序列中的元素个数必须和切片中的个数保持一致
list1[::2] = 'abc'
print(list1)
# 运行结果 ['a', '李四', 'b', '小明', 'c']
list1[::2] = 'abcd'
# 运行结果 ValueError: attempt to assign sequence of size 4 to extended slice of size 3
  • 通过切片删除元素
list1[2:] = []
print(list1)
# 运行结果 ['张三', '李四']

06-列表中的修改方法

增加方法

#  list.append() 末尾添加

list1.insert(4, "猪")
print(list1)
# 运行结果 ['张三', '李四', '王五', '小明', '猪', '猫叔']

list1.extend(['猫', '狗'])
print(list1)
# 运行结果 ['张三', '李四', '王五', '小明', '猪', '猫叔', '猫', '狗']

删除方法

#  list.pop()根据索引删除,并返回删除的元素
list1 = ['张三', '李四', '王五', '小明', '猫叔']
res = list1.pop(3)
print(res)
print(list1)
# 运行结果
# 小明
# ['张三', '李四', '王五', '猫叔']

list1 = ['张三', '李四', '王五', '小明', '猫叔']
list1.remove('张三')
print(list1)
# 运行结果 ['李四', '王五', '小明', '猫叔']

清空列表 list.clear()
反转列表 list.reverse()
排序列表 list.sort()升序 list.sort(reverse=True)降序

07-for循环和range函数

list1 = ['张三', '李四', '王五', '小明', '猫叔']
for i in list1:
    print(i)
# range(开始数据, 结束数据, 步长)
print(list(range(9)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8]
for i in range(1,11)
	print(i)

作业

  1. 现在有 a = [1,2,3,4,5,6] 用多重方式实现列表的反转([6,5,4,3,2,1])并写出推导过程
a = [1, 2, 3, 4, 5, 6]
b = []
# 方法1 步长切片操作
b = a[::-1]
print(b)

# 方法2 头部切片修改
for i in a:
    b[0:0] = [i]
print(b)

# 方法3 头部插入
for i in a:
    b.insert(0, i)
print(b)

# 方法4 反转列表
a.reverse()
print(a)

# 方法5 尾部添加
for i in range(1, len(a)+1):
    b.append(a[-i])
print(b)
  1. 给用户9次机会 猜1-10个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对
# 取一个1-10的区间
list1 = []
for i in range(1, 11):
    list1.append(i)


# 定义一个猜数字函数
def guess():
    # 请用户输入一个数字
    a = int(input('请猜一个{}内的数字'.format(list1)))
    # 判断用户输入是否合法
    if a in list1:
        list1.remove(a)
    else:
        print('你输入不合法')


# 猜9次
while len(list1) > 1:
    guess()
else:
    print('正确是数是{}'.format(list1[0]))

运行结果在这里插入图片描述

  1. 有两个列表 lst1 = [11,22,33] lst2 = [22,33,44] 获取内容相同的元素
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
# 遍历lst1
for i in lst1:
    # 判断是否在lst2中有这个元素
    while i in lst2:
        print(i)
        break

运行结果
在这里插入图片描述

  1. 现有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中
import random
# 定义8位老师用1-8数字代替
teacher = []
for i in range(1, 9):
    teacher.append(i)
# 随机排序
random.shuffle(teacher)
# 随机选2个索引
index1 = random.randint(1, 8)
index2 = random.randint(1, 8)
# 比较索引大小
a = min(index1, index2)
b = max(index1, index2)
# 切片分配
print('1教室的老师是{}'.format(teacher[:a]))
print('2教室的老师是{}'.format(teacher[a:b]))
print('3教室的老师是{}'.format(teacher[b:]))

运行结果
在这里插入图片描述

  1. 要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
  • 用户名长度6-20,用户名必须以字母开头
  • 密码长度至少6位,不能为纯数字,不能有空格
# 定义一个空列表放帐号密码
lst = ["帐号", "密码"]


# 定义用户名函数
def name():
    # 键盘输入用户名
    a = input("请输入用户名")
    # 判断长度
    if 6 <= len(a) <= 20:
        # 判断字母开头
        if a[0].isalpha():
            # 在空列表里插入正确帐号
            lst.insert(1, a)
            # 运行密码自定义函数
            password()
        else:
            print('首位要是字母')
            name()
    else:
        print('请输入长度在6到20之间')
        name()


# 定义密码函数
def password():
    # 键盘输入密码
    a = input("请输入密码")
    # 判断长度
    if len(a) >= 6:
        # 判断纯数字
        if not a.isdigit():
            # 判断没有空格
            if ' ' not in a:
                # 在空列表里插入密码
                lst.append(a)
            else:
                print('密码不能有空格')
                password()
        else:
            print('密码不能为纯数字')
            password()
    else:
        print("长度要大于6")
        password()


name()
print(lst)

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yerennuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值