序列
序列的概念:
- 序列是Python中最基本的⼀种数据结构。序列⽤于保存⼀组有序的数据,所
有的数据在序列当中都有⼀个唯⼀的位置(索引)并且序列中的数据会按照添加的顺序来分配索引 - 数据结构指计算机中数据存储的⽅式
序列的分类: - 可变序列(序列中的元素可以改变):例如 列表(list)
- 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
列表
# 列表是Python中的⼀个对象
# 列表的作⽤
# 列表中可以保存多个有序的数据
# 列表是⽤来存储对象的对象
# 列表的创建:通过[]来创建⼀个空列表
a = []
1. 列表的切片
a = [1, 2, 3, 4, "345", 6]
# 切⽚是指从现有列表中获得⼀个⼦列表
# 通过切⽚来获取指定的元素
# 语法: 列表[起始 : 结束 : 步⻓]
# 通过切⽚获取元素时,会包括起始位置的元素,不会包括结束位置的元素
# 起始位置和结束位置的索引可以不写
# 如果省略结束位置, 则会从当前的开始位置⼀直截取到最后
# 如果省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结
# 束的元素
# 如果开始位置和结束位置都省略, 则则会从第⼀个元素开始截取到最后⼀
# 个元素
# 步⻓表示每次获取元素的间隔,默认是1(可以省略不写)
# 步⻓不能是0,但可以是是负数
print(a[-1:-7:-1])
print(a[1])
print(a[1::1])
print(a[:5:1])
print(a[::])
print(a[-2][1])
输出结果:
D:\shihaoqing\venv\Scripts\python.exe D:/shihaoqing/上课资料/第六讲内容练习.py
[6, '345', 4, 3, 2, 1]
2
[2, 3, 4, '345', 6]
[1, 2, 3, 4, '345']
[1, 2, 3, 4, '345', 6]
4
2.列表的通用操作
a = [1, 2, 3] + [4, 5, 6]
print(a)
a = [1, 2, 3] * 2
print(a)
a = [1, 2, 3] * [4, 5, 6] 报错
print(a)
Traceback (most recent call last):
File "D:/shihaoqing/上课资料/第六讲内容练习.py", line 29, in <module>
a = [1, 2, 3] * [4, 5, 6]
TypeError: can't multiply sequence by non-int of type 'list'
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3]
#in和not in 检测数据是否在列表当中
a = [1, 2, 3, 3]
print(1 in a)
#len()获取了表中元素个数
print(len(a))
#max()和min()获取列表中最大值和最小值
print(max(a))
#index()查找数据索引位置
print(a.index(2))
#count()统计元素在列表中出现的次数
print(a.count(3))
输出结果:
True
4
3
1
2
3.修改列表
list1 = [1, 2, 3, 4, 5, 6]
# del 关键字删除
del list1[2]
print(list1)
# 通过切片的方式修改列表 替换的必须为序列
list1[0:1:] = '5'
print(list1)
结果
[1, 2, 4, 5, 6]
['5', 2, 4, 5, 6]
Process finished with exit code 0
list1.append(2)
# append() 像列表的最后添加⼀个元素
print(list1)
list1.insert(1, 5)#insert(arg1,arg2) 像列表指定位置插⼊⼀个元素 参数1:要插⼊的位置 参数
# 2:要插⼊的元素
print(list1)
list2 = [1, 2, 3]
list1.extend(list2)#extend( iterable ) 使⽤⼀个新的序列来扩展当前序列(它会将该序列的中元素
# 添加到列表中) 参数需要传递⼀个序列
print(list1)
a = list2.pop(1)#pop() 根据索引删除并返回指定元素
print(a)
print(list2)
# list2.remove(6) 删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)
# print(list2)
list2.clear()#清空列表
#reverse() 翻转列表
a = [1, 2, 3, 4]
a.reverse()
print(a)
#sort(key=None,reverse=False) ⽤来对列表中的元素进⾏排序 reverse:True反序;False 正序
a = [1, 2, 3, 4]
a.sort(reverse=True)
print(a)
for循环和range函数
list1 = [1, 2, 3, 4, 5, 6, 6]
for i in list1:#for 变量 in 序列(遍历的规则)#对于这个数据在列表中挨个访问称呼为遍历
print(i)
结果
1
2
3
4
5
6
6
Process finished with exit code 0
range(开始数据,结束数据) 左闭右开(取头不去尾)
for i in range(0, 9):
print(i)
0
1
2
3
4
5
6
7
8
Process finished with exit code 0
作业
#反转列表
a = [1, 2, 3, 5, 6, 7, 8]
b = list(reversed(a))
print(b)
a = [1, 2, 3, 5, 6, 7, 8]
b = a[-1:-8:-1]
print(b)
a = [1, 2, 3, 5, 6, 7, 8]
a.sort(reverse=True)
print(a)
#取两个列表内相同元素
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
i = 0
while i < 3:
if lst1[i] in lst2:
print(lst1[i])
i += 1
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
for i in lst1:
for s in lst2:
if i == s:
print(s)
#给用户九次机会猜1-10个
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
i = 0
while i < 9:
player = int(input('请输入1-10的数字:'))
print('对不起您猜错了')
lst.remove(player)
i += 1
print('正确答案是%s' % lst[0])
验证用户名,密码
while True:
user = input('请输入用户名:')
num = len(user)
if 6 <= len(user) <= 20:
if user[0].isalpha():
print('符合要求')
else:
print('用户名不是以字母开头请重新输入')
continue
else:
print('用户名长度不是6-20请重新输入')
break
while True:
password = input('请输入密码:')
if not password.isdigit():
print()
if len(password) >= 6:
print()
else:
print('长度错误')
continue
else:
print('不能全为数字')
continue
for i in password:
# password = input('请输入密码:')
if i == ' ':
print('密码中不能有空格请重新输入')
continue