一、列表
列表和字典是最常用的两种数据类型
1. 需求:怎么存放班级80多人的姓名,如何实现?
names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"] print(names[0],names[2]) #取出 Zhangyang Xiangpeng print(names[2:4]) #切片,取出"Xiangpeng","Xuliangchen"并输出 print(names[0:4]) #切片,取出"Zhangyang","Guyun","Xiangpeng","Xuliangchen"] print(names[-1]) #切片,负数指从后往前 print(names[-2:]) #取最后2个值
注意:前后的0可以省略
2. 举例说明列表的各种操作
names = "ZhangYang Guyun Xiangpeng XuLiangChen" #以此列表为例
增加:
names.append("Leihaidong") #在列表最后增加
插入:
names.insert(1,"Chenronghua") #位置1,插入数据 names.insert(3,"Xinzhiyu") #位置3,插入数据
修改:
names[2] = "Xiedi" #下标位置2,替换成"Xiedi"
删除:(三种方式)
names.remove("Chenronghua") #删除列表中指定数据 del names[1] #删除下标位置1的数据 names.pop() #不加下标,删除最后一个数据;加下标,和del效果相同
拷贝:
(1)
names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"] names2 = names.copy() names[2] = "向鹏" print(names) print(names2)
(2)
a.
names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"] names2 = names.copy() #浅copy,只拷贝第一层 names[2] = "向鹏" names[3][0] = "ALEX" print(names) print(names2)
查看输出结果,names2中,Xiangpeng没有改,子列表中的数据都被修改。因为子列表中的数据只是一个内存地址,copy的时候只copy内存地址
b.浅copy,浅copy的用途:创建联合账号
import copy names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"] names2 = copy.copy(names) print(names) print(names2) names[2] = "向鹏" names[3][0] = "ALEX" print(names) print(names2)
(3)深copy
import copy names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"] names2 = copy.deepcopy(names) print(names) print(names2) names[2] = "向鹏" names[3][0] = "ALEX" print(names) print(names2)
此时,names和names2将会成为独立的两份数据
列表循环:
for i in names: print(i)
列表切片:
print(names[0:-1:2]) print(name[::2])
上面两条命令效果相同,间隔输出列表中数据。列表操作中的0和-1可以省略。
二、元组
元组其实跟列表差不多,也是存一组数,只是它一旦创建,便不能再修改,所以又叫只读列表。
语法:
names = (‘alex‘,‘jack‘)
元组只有2个方法,一个是count,一个是index
三、程序练习
程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检查余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
代码如下:
shopping_list = [] #已购买的商品列表,预先定义空列表 salary = input("please input your saraly:") # 启动程序后,让用户输入工资 product_list = [ (‘iphone‘,5800), (‘bike‘,800), (‘coffee‘,31), (‘Macbook Pro‘,12000), (‘alex python‘,81), (‘a‘,120) ] if salary.isdigit(): salary = int(salary) while True: for index,item in enumerate(product_list): #从商品列表中取数据和下标 # print(product_list.index(item),item) 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: #买得起 shopping_list.append(p_item) salary -= p_item[1] print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary)) else: print("\033[41;1m你的余额只剩[%s]啦,买不起此商品\033[0m" %salary) else: print("product code [%s] is not exist!!!" %user_choice) elif user_choice == ‘q‘: print("--------- shopping list ---------") for p in shopping_list: print(p) print("Your current balance:",salary) exit() else: print("invalid option")
时间: 2024-10-25 10:01:37