python学习笔记(列表、元组、购物车实例)
一、列表
列表和字典是最常用的两种数据类型
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")
python学习笔记(列表、元组、购物车实例)的更多相关文章
- 《python基础教程(第二版)》学习笔记 列表/元组(第2章)
<python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Python学习笔记----列表、元组和字典的基础操作
文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...
- python学习笔记整理——元组tuple
Python 文档学习笔记2 数据结构--元组和序列 元组 元组在输出时总是有括号的 元组输入时可能没有括号 元组是不可变的 通过分拆(参阅本节后面的内容)或索引访问(如果是namedtuples,甚 ...
- python学习笔记——列表生成式与生成器
1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...
- python学习笔记3(元组、字典)
Python中有三种内置的数据类型.dictionary(字典).List(列表)和tuple(元组). 元组(tuple) 只读列表(列表的值可以修改,元组的不可以) 元组与列表类似,不同之处在于元 ...
- PYTHON 学习笔记3 元组、集合、字典
前言 在上一节的学习中.学习了基本的流程控制语句,if-elif-else for while 等,本节将拓展上一节学习过的一些List 列表当中操作的一些基本方法,以及元祖.序列等. 列表扩展 我们 ...
- Python学习笔记3-Python元组、数组、字典集合的操作
在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...
- Python学习笔记——列表
1.创建列表类型数据并给其赋值 >>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, ...
- python学习笔记——列表操作
python列表操作——增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] ...
随机推荐
- notepad++设置默认打开txt文件失效的解决方法
1.系统环境 win10企业版,64位系统 2.初步设置 设置txt默认为notepad++打开,菜单:设置->首选项->文件关联 选择对应的文件扩展,点击"关闭"按钮 ...
- Asp.Net Core + Dapper + Repository 模式 + TDD 学习笔记
0x00 前言 之前一直使用的是 EF ,做了一个简单的小项目后发现 EF 的表现并不是很好,就比如联表查询,因为现在的 EF Core 也没有啥好用的分析工具,所以也不知道该怎么写 Linq 生成出 ...
- Flexible 弹性盒子模型之CSS flex-shrink 属性
实例 让第二个元素收缩到其他元素的三分之一: 效果预览 div:nth-of-type(2){flex-shrink:3;} 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号. 紧跟在 - ...
- 《动手实现一个网页加载进度loading》
loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在刷新和加载的过程中为了让用户感知到 load 的过程,我们会使用一些过渡动画来表达.最常见的比如"转圈圈" ...
- ExecuteOrDelayUntilScriptLoaded 还是 SP.SOD.executeFunc?
SharePoint 客户端 JS 开发时,要等待 SharePoint 对象都加载完毕再调用自己的方法(myFunction),可以有两种方式: ExecuteOrDelayUntilScriptL ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- MongoDB学习笔记四—增删改文档下
$slice 如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度.$slice 的值必须是负整数. 假设$slice的值为 ...
- Spark笔记:复杂RDD的API的理解(下)
本篇接着谈谈那些稍微复杂的API. 1) flatMapValues:针对Pair RDD中的每个值应用一个返回迭代器的函数,然后对返回的每个元素都生成一个对应原键的键值对记录 这个方法我最开始接 ...
- 2000条你应知的WPF小姿势 基础篇<1-7>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- SQL Server 索引和表体系结构(非聚集索引)
非聚集索引 概述 对于非聚集索引,涉及的信息要比聚集索引更多一些,由于整个篇幅比较大涉及接下来的要写的“包含列的索引”,“索引碎片”等一些知识点,可能要结合起来阅读理解起来要更容易一些.非聚集索引和聚 ...