一、列表
# Author:Li Dongfei
names = ["zhangsan","lisi","wangwu","jack"]
print(names)
print(names[0],names[2])
print(names[1:3]) #切片
print(names[-1]) #取最后一个值
print(names[-2:]) #取最后俩个值
print(names[0:-1:2])
print(names[::2])
names.append("maria") #追加值
print(names)
names.insert(1,"Tony") #插入lisi的前边
print(names)
names[2] = "xiaoming" #将第三个位置的值改为"xiaoming"
#names.remove("lisi") #删除
del names[2] #删除第三个值
names.pop() #删除,默认删除最后一个值
#names.clear() #清空列表
names.reverse() #翻转列表
names.sort() #排序
names2 = [1,2,3,4]
names.extend(names2) #扩展
print(names)
print(names2)
names3 = names2.copy() #浅copy,只复制第一层列表,子列表不会copy
name4 = copy.copy(names2)
name5 = copy.deepcopy(names2) #深copy,完全克隆
- 列表循环
# Author:Li Dongfei
names = ["zhangsan","lisi","wangwu","jack"]
for i in names:
print(i)
- 列表切片
# Author:Li Dongfei
names = ["zhangsan","lisi","wangwu","jack"]
print(names)
print(names[0],names[2])
print(names[1:3]) #切片
print(names[-1]) #取最后一个值
print(names[-2:]) #取最后俩个值
print(names[0:-1:2])
print(names[::2])
- 浅copy
# Author:Li Dongfei
import copy
person = ['dongfei',['saving',100]]
p1 = copy.copy(person)
p2 = person[:]
p3 = list(person)
二、元组
可以理解为只读列表
# Author:Li Dongfei
names = ('dongfei','dongfei2')
三、字典
- 字典是无序的
字典可以层层嵌套
增删查改
# Author:Li Dongfei
info = {
'stu01': "linghuchong",
'stu02': "yangguo",
'stu03': "xiaofeng"
}
print(info) #字典是无序的,通过key来查找
print(info["stu01"]) #取指定key的val
print(info.get("stu05")) #安全的查,如果没有返回none
print("stu04" in info) #判断key是否在字典中存在
info["stu01"] = "令狐冲" #改
info["stu04"] = "ouyangfeng" #增
del info["stu02"] #删
info.pop("stu03") #删
info.popitem() #随机删
print(info)
- 嵌套
info2 = {
"stu01": {
"name": "xiaolongnv",
"age": 18
},
"stu02": {
"name": "yangguo",
"age": 12
}
}
info2["stu02"]["age"] = 13
print(info2)
- 常用方法
info.setdefault() #如果key有值则使用,没有值附一个默认的值
info.update() #俩个列表合并
info.items() #将字典转换为列表和元组
info.fromkeys() #初始化一个新的字典,笛卡尔乘积
- 字典的循环
# Author:Li Dongfei
info = {
'stu01': "linghuchong",
'stu02': "yangguo",
'stu03': "xiaofeng"
}
for i in info: #建议用此方法,高效
print(i,info[i])
for k,v in info.items(): #第二种方法
print(k,v)
四、集合
五、练习
- 购物车
# Author:Li Dongfei
product_list = [
('iphone',5800),
('mac pro',9800),
('bike',800),
('watch',10600),
('coffee',31),
('python book',120)
]
shopping_list = []
salary = input("请输入您的预算>>> ")
if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list):
print(index,item)
user_choice = input("请输入要购买的商品编号>>> ")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice < len(product_list) and user_choice >= 0:
p_item = product_list[user_choice]
if p_item[1] < salary:
salary -= p_item[1]
shopping_list.append(p_item)
print("您加入了%s商品,预算还剩%s" %(p_item,salary))
else:
print("您的预算不足,还剩%s" %salary)
else:
print("商品不存在!")
elif user_choice == 'q':
print("————已购买的商品————")
for p in shopping_list:
print(p)
exit("找零%s" %salary)
else:
print("invalid option!")
- 三级菜单
# Author:Li Dongfei
data = {
'beijing': {
"dongchen": ["dongdan","beijingzhan"],
"xicheng": ["xidan","beijingxizhan"]
},
'hebei': {
"shijiazhang": ["qiaodong","qiaoxi"],
"zhangjiakou": []
}
}
while True:
for i in data:
print(i)
choice = input(">>>")
if choice == 'b':
exit("done")
if choice in data:
while True:
for j in data[choice]:
print("\t",j)
choice2 = input(">>>")
if choice2 == 'b':
break
if choice2 in data[choice]:
while True:
for k in data[choice][choice2]:
print("\t\t",k)
choice3 = input(">>>")
if choice3 == 'b':
break