#_date_:2020/9/11

'''
列表和字典是python中用的最多的数据类型 假如要存储一个班级的人名,需要怎么做?
有这么几种方法:
1.定义很多个变量:
name0 = 'wucaho'
name1 = 'jinxin'
name2 = 'sanpang'
name3 = 'ligang'
缺点:会开辟很多内存,并且各变量之间没有关联

2.定义一个变量,把所有的名字放在这一个变量中:
names = 'wuchao jinxin sanpang ligang'
缺点:无法取值,对其中的元素没有办法进行增、删、改、查

以上两种方法都有不足,为了解决这种场景,python创建了一种存储多个值的方法,这个方法就叫   列表

a = []  写一个中括号,赋值给变量a,就已经创建了一个列表,列表中可以存很多元素,用逗号隔开
因此:
a = ['wuchao','jinxin','xiaohu','sanpang','ligang']
里面的元素下标依次是0,1,2,3,4

'''

#学习列表的增、删、改、查

#1.查
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
print(a[3])
print(a[1]) #方括号中的数字就是索引
#取出多个值 切片
print(a[1:3]) #切片的取值方法是:顾头不顾尾,冒号前面的值可以取到,后面的值取不到
#如果我想去最后一个值,要怎么操作
print(a[1:]) #切片中要取到最后一个元素,就是1:,冒号后面不写任何值(针对不知道元素个数的情况)
print(a[1:-1]) #-1表示,取到最后一个值的前面一个值
print(a[1:4:2]) #最后一个数字表示步长,表示跳着取值;如果不写最后一个值,默认步长为1,从左到右依次取值
print(a[1::2])
print(a[3::-2]) #先取ligang,再取sanpang,调换位置,步长设置为负数即可,负数代表从右往左取值
print(a[-2::-1])
print("haidilao" in a) #in查找某个值是否在列表中
#2.增
#涉及到两个添加方法:append、insert
#append 会把值放入到列表的最后一项
#insert 可以把数据插入到具体的位置
append
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
a.append('xuepeng') #append 中跟的是要添加到列表中的值
print(a) insert
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
a.insert(1,'xuepeng')
print(a)
#3.改
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
a[1] = 'haidilao'
print(a) a[1:3] = ['zhangsan','lisi'] #通过切片修改某几个值
print(a)
#4.删除
#remove,pop,del
# remove
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
a.remove('jinxin')
print((a)) # pop 可以返回被删除的值,如果被删除的值后面要用,可以用pop
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
b = a.pop(1) #pop可以返回被删除的值
print(a)
print(b) # del 可以删除任何值
a = ['wuchao','sanpang','jinxin','ligang','xiaohu']
del a[0]
print(a)
#学习列表的其他方法
#5.count方法
#计算元素出现的次数
t = ['to','be','or','not','to','be'].count('to')
print(t)
#6.extend方法
#可以在列表的末尾一次性追加另一个序列中的多个值
a = [1,2,3]
b = [4,5,6]
a.extend(b)
print(a)
print(b)
#7.index方法   根据内容找位置
#查找列表中某个值的索引值,如果有两个相同的值,则取第一个值的索引
a = ['wuchao','sanpang','jinxin','ligang','jinxin','xiaohu']
#如果非要取相同值的位置,则需要对列表进行切片
first_jx_index = a.index("jinxin") #先取出第一个jinxin 的位置 little_list = a[first_jx_index+1:] #从第一个jinxin后面的位置对大列表进行切片 second_jx_index = little_list.index("jinxin") #小列表中jinxin的位置 second_jx_in_big_list_index = first_jx_index + second_jx_index+1 #确定jinxin在大列表中的位置
print("second_jx_in_big_list_index",second_jx_in_big_list_index) print("second jx:",a[second_jx_in_big_list_index])
#8.reverse方法  反转列表中各元素的位置,没有返回值
a = ['wuchao','sanpang','jinxin','ligang','jinxin','xiaohu']
a.reverse()
print(a)
#9.sort排序
x = [4,1,2,6,9,8,5]
x.sort(reverse=True)
print(x)
#如果元素是英文,按照ASCII码进行排序
a = ['wuchao','sanpang','jinxin','Ligang','jinxin','Xiaohu']
a.sort()
print(a)
#10.身份判断
a = ['wuchao','sanpang','jinxin','ligang','jinxin','xiaohu']
print(type(a) is list)

作业:写一个购物车程序

安排:

#创建一个商品列表
product_list = [
('mac',9000),
('iphone',6000),
('tesla',300000),
('python book',102),
('keyboard',600),
('bike',2000)
]
#创建一个变量,存储个人存款
saving = input("Please input your money:")
shopping_car = [] #定义一个空列表,用来存储买到的商品
#判断输入的存款是否是数字
if saving.isdigit():
saving = int(saving)
#由于产品列表要不断的出现,因此使用while循环
while True:
#利用for循环和enumerate枚举打印产品列表
for i,v in enumerate(product_list,1):
print(i,".",v)
#定义一个变量,存储用户输入的商品序号
choice = input("Please input your choice(quit:q):")
#判断输入的是否为数字,如果是十足,则将choice转换为int类型,进行下一步操作
if choice.isdigit():
choice = int(choice)
#判断choice的大小,choice必须大于0,并且小于等于列表的长度
if 0 < choice <= len(product_list):
#定义一个变量,存储选中的商品
p_item = product_list[choice-1] #choice为商品序号,比商品的索引值大1
#对p_item中的金额和用户输入的金额作对比
if p_item[1] <= saving:
saving -= p_item[1]
shopping_car.append(p_item)
print("you buy:%s"%p_item[0])
else:
print("you have not enough money!")
else:
print("the number that you input is too big!")
#如果输入的是q,则打印退出
elif choice == "q":
print("--------------you bought these products------------------")
for n in shopping_car:
print(n)
print("you have %s yuan "%saving)
break
# 如果输入的不是数字,打印“输入不合法字样”
else:
print("choice is invalid!")
else:
print("your saving is invalid input!")

我的Python自学之路-001 列表的知识的更多相关文章

  1. 我的Python自学之路-003 字符串的知识

    '''字符串是以引号或者单引号括起来的任意文本,例如"123","asdfjk",'adfa'引号或者单引号,只是一种表示方法,并不是字符串的一部分如果字符串本 ...

  2. 我的Python自学之路-002 字典的知识

    '''字典是python中唯一的验证类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算.根据计算的结果决定value的存储地址.所以字典是无序存储的.且key必 ...

  3. Python自学之路---Day13

    目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...

  4. Python自学之路---Day01

    目录 Python自学之路---Day01 注释 单行注释 多行注释 print()函数 语法 参数 实例 input()函数 语法 参数 实例 查看Python的关键字 代码 变量与常量 变量 如何 ...

  5. python 自学之路-Day Two

    Day1补充部分 模块初识 模块就是由其他人写好的功能,在程序需要的时候进行导入,直接使用,也叫库. 库有标准库和第三方库,所谓标准库,就是不需要安装就可以直接使用的,自带的:第三方库,就是需要进行下 ...

  6. python 自学之路-Day one

    一.Python介绍 创始人吉多范罗苏姆(龟叔),脚本解释程序 应用领域广,数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等. 主要应用领域: 云计算:OpenStack: WEB开发:经 ...

  7. python学习之路04——列表和字典

    列表和字典 python中的可变数据类型有:列表和字典 不可变类型:数字,字符串,元组 今天先讲列表和字典 一.列表 1.概念: 变量:使用变量存储数据,但是,变量存储数据每次只能存储一个数据 问题: ...

  8. Python学习之路2 - 列表和元组

    列表 概念:Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 列表的使用 names = ['zhangsan','lisi','wangwu' ...

  9. Python自学之路

    2020年春节,受新型冠状病毒影响,整个春节假期,全国人民都在恐慌之中,为了避免大家上班相互传染,公司号召国家政策,开始上班日期延迟,在家呆的实在太无聊,突然感觉自己不能浪费这美好的时光,决定学习Py ...

随机推荐

  1. centos AAVMF_CODE.fd 文件下载

    centos: yum install AAVMF -y ubuntu: apt-get install qemu-efi*

  2. Discovering Reinforcement Learning Algorithms

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:2007.08794v1 [cs.LG] 17 Jul 2020 Abstract 强化学习(RL)算法根据经过多年研究手动发 ...

  3. Jenkins匿名用户设置

    最近自己安装配置jenkins,但是跑任务时,发现是匿名账户登录,可以在系统设置中点击如下: 2.勾选“启用安全”,“访问控制”>“安全域”选择“Jenkins专有用户数据库”,并勾选“允许用户 ...

  4. 02.RDB持久化配置与工作流程

    一.如何配置RDB持久化机制 配置文件redis.conf save 60 1000 表示每隔60s,检查如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redi ...

  5. 断言函数-RF

    测试用例的目的是要验证一些操作否符合我们的预期结果,所以在测试用例中,断言函数是必不可少的一项.我们做的每一步操作都会有预期的结果,为了保证操作得到的结果符合预期,我们需要在测试用例中添加断言,来保证 ...

  6. csp201909-2小明种苹果续

    /* 定义输入N 二维数组 输出T总数 D掉落棵树 E掉落组数 定义last记录上次掉落的编号,flag=1表示两次连续掉落,不掉落归零 spec=1表示1 2都掉落了,spec=2表示只有1掉落 对 ...

  7. 手写Promise看着一篇就足够了

    目录 概要 博客思路 API的特性与手写源码 构造函数 then catch Promise.resolved Promise.rejected Promise.all Promise.race 概要 ...

  8. Spring Security如何优雅的增加OAuth2协议授权模式

    一.什么是OAuth2协议? OAuth 2.0 是一个关于授权的开放的网络协议,是目前最流行的授权机制. 数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令 ...

  9. composer源码简单分析(一)

    composer分析(一) 本文内容 基于PSR-4规范的自动加载 请结合文档和下面的代码注释 spl_autoload_register php闭包Closure简单用法(大体使用情景: 生成回调提 ...

  10. Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!

    文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...