前言
通过学习python,会发现python的语法真的很强大,如果用c++的思维写python会变的很复杂,在python中有很多方法可以直接使用,不必再去写好几行代码去实现,这就是python的智能之处吧。
这篇帖子呢
列表
python中的列表和c++的数组很像,同样是存储多个数据。
和c++的不同之处,c++必须是规定类型,如int a[10];
在python中可以保存n个数据,并且每个数据类型可以不一样。
1.列表的定义
names=["小红",小李]
int a[10] 等价于names=[“小红”,“小李”]。
和c++一样,下标值在python中叫做索引值,索引值从0开始。
2.循环遍历方法一:for循环
for temp in infos: #infos是列表名字
print(temp) #打印每次得到的列表元素
3.循环遍历列表方法二:while循环
while i< len(infos): #len函数获取到infos列表的长度(元素个数)
print(infos[i])
i++
在列表中添加数据
append向列表的末尾追加数据
insert将数据插入列表中
extend 把另一个列表中存在的内容扩展到当前列表中
name_list.append(“王小二”)#将王小二数据放到name_list列表的末尾
name.list.insert(1,“小妹妹”) 在name_list列表的索引位置1插入小妹妹数据
name.list.extend(temp_list)将temp_list 列表的完整数据放到name_list列表的末尾
在列表中修改元素
name_list[1]="李四“
列表指定的索引超出范围,程序会报错。
在列表中删除指定的数据
remove 删除方法
clear 清空方法
pop方法 默认情况下可以删除列表中最后一个元素
del 列表名列表索引 用del关键字删除指定数据
name_list.remove(“wangwu”)#将wangwu元素从列表中删除指定的数据
name_list.pop() !#删除列表中最后一个元素
name_list.pop(3)#参数指定索引位置
name_list.clear() #清空列表中所有元素
del name_list[1] 用关键字删除数据
del关键字本质上是把一个变量从内存中删除
注意:如果使用del关键字将变量从内存中删除,后续的代码就不能再使用这个变量了。
列表的排序操作
升序 由小到大的方法
name_list.sort()
降序 由大到小的方法
name_list.sort(reverse=True)
逆序(反转) 将原来的顺序反转过来
name_list.reverse()
列表的嵌套
列表中的元素也是一个列表,就是嵌套
应用: 一个学校,有三个办公室,有八个老师,实现随机分配。
import random #使用随机工具 random
#定义一个列表用来保存3个办公室
offices=[[],[],[]]
#定义一个列表用来存储八位老师的名字
names=['A','B','C','D','E','F','G','H']
i=0
for name in names:
index =random.randint(0,2)#0 1 2 随机生成一个数,用来作为办公室的索引
offices[index].append(name) #将老师的名字放到随机办公室内
for temNames in offices:
print("办公室%d的人数为:%d"%(i,len(temNames)))
print("这间办公室老师的姓名是")
for name in offices[i]:
print(name,end=" ")
print()
i=i+1
元组
有多个元素组成的序列,每个数据直接用逗号隔开。和列表非常相似
元组用()定义 索引从0开始 元组一旦定义不可进行增删查改
虽然列表可以存储不同数据类型的元素,但是我们在使用列表时还是喜欢把相同类型的数据放到一个列表中,便于进行遍历操作。而元组有自己的应用场景
定义元组
info_tuple =(“zhangsan”,18,1.75)
empty_tuple=() 空元组
single_tuple =(5,) 定义一个只有一个元素的元组,如果不加逗号,解释器会把第一个数据类型作为元组的数据类型
元组的常用操作
info=()
#取值和取索引
print(info[0])#元组和列表取值都是用[]
print(info.index(“张三”))
#统计计数
print(info.count(“zhangsna”))#统计数据在元组中出现的次数
#统计元组中包含的元素的个数
print(len(info))
#元组的循环遍历
for my_info in info
#因为元组中通常保存的数据类型是不一样的,所以在输出的不是很方便
print()
应用场景:
1.函数的参数和返回值 ,一个函数可以接收 任意多个参数 或者一次返回多个数据
2.格式字符串 格式化字符串后面的()本质上就是一个元组 输出元组可以用格式化字符串的格式
3.让列表不可以被修改,以保护数据安全。
tuple ()函数就可以将可以修改的列表转化为元组
list()函数就可以将可以元组转化为成可修改的元组
字典
类似于c语言中的结构体数据
列表是有序的对象集合
字典是无序的对象集合
字典用{}定义
字典使用键值对存储数据,键值对之间使用逗号分隔
key 用来获取数据 value用来保存数据 两者合在一起叫键值对。
键key是索引 值value是数据 键和值之间使用;分隔 。 键必须是唯一的;
值可以取任何数据类型,但是键key只能使用字符串、数字、或者元组(元组不可修改)
字典变量的应用场景:描述物体的详细信息
定义一个字典变量
xiaoming={"name": 小明,
"age":18}
print(xiaoming)#直接将字典名字写上即可
字典的常见操作
1.取值
print(xiaoming[“name”])
#在取值的时候,如果指定的key不存在,程序会保存
2.增加/修改
如果key不存在,会新增键值对,如果key存在,会修改已经存在的键值对
xiaoming["age"] =20
xiaoming["name"]="xiaoxiaoming"
3.删除
和列表的pop一样,加入key可以删除指定的键值对,如果不加参数,则会删除最后一个键值对
xiaoming.pop("name")
print(xiaoming)
4.统计键值对的数量
print(len(xiaoming))#len函数列表元组字典都有用
5.合并字典
temp={“hegiht”:1.75}
xiaoming.update(temp)#使用update方法将两个字典合并
#如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对。
6.清空字典
xiaoming.clear()
字典的循环遍历
实际开发中需求对字典的循环遍历并不多
#变量k是每次循环中,获取到的键值对的key
for k in xiaoming:
print(“%s-%s”%(k,xiaoming[k]))#xiaoming[k]使用key定位获取到键值对的value
练习题
编写一段程序,模拟自动柜员机验证身份的过程。
假设银行共有5个用户,每个都有自己的卡号和密码,存放在字典userInfo中。userInfo = {’ 622311156781’:’123456’,’ 622311156782’ :’000000’,622311156783’ :’111111’,622311156784’ :’555555’,
622311156785’ :’999999’ }
首先提示用户输入卡号和密码,当用户输入卡号和密码后,柜员机要验证身份信
息是否正确,如果正确显示欢迎信息,否则提示密码错误,如果连续错误达到3
次,则显示账号被锁定。
userInfo={
"622311156781":"123456",
"622311156782":"000000",
"622311156783" :"111111",
"622311156784" :"555555",
"622311156785" :"999999" }
user_list=list(userInfo.keys())#将字典的key转化为列表
count_list=[0,0,0,0,0]#作为输入密码错误次数的列表
flag =0
while flag==0:
id=input("请输入您的卡号")
#判断用户名是否存在
if id not in userInfo.keys():
print("您输入的用户不存在。请重新输入")
continue
else:
passwd = input("请输入您的密码")
for user in user_list:#获取到user_list 列表的索引值 作为count_list列表的索引值
if user==id:
user_index=user_list.index(user)
if count_list[user_index]==2:
print("您输入密码错误的次数达到三次,账号被锁,请联系工作人员")
break
passwd1=userInfo.get(id)#获取到存在的用户名的对应的密码
if passwd==passwd1:
print("欢迎使用自助柜台!")
count_list[user_index]=0 #清空错误次数
else:
print("您输入的密码有误,请重新输入")
count_list[user_index]=count_list[user_index]+1