#_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. 【算法•日更•第三十七期】A*寻路算法

    ▎写在前面 这是一种搜索算法,小编以前总是念成A乘寻路算法,没想到一直念错. 请大家都念成A星寻路算法,不要像小编一样丢人了. ▎A*寻路算法 ☞『引入』 相信大家都或多或少的玩过一些游戏吧,那么游戏 ...

  2. html中datalist 是什么??????

    <datalist>标签定义选项列表,与input元素配合使用该元素,来定义input可能值.datdallist及其选项不会被显示出来,它仅仅是合法的输入值列表. <input i ...

  3. Typescript node starter 1.Express Typescript

    启动项目 Express 是一个nodejs框架,用于构建Web后端应用程序.它非常的灵活,你可以用你喜欢的方式去使用他.在这个系列文章里,记录了我使用typescript express去构建一个w ...

  4. 使用folderLeft函数统计字母出现的次数

    实例:统计字符串中字母出现的次数 import scala.collection.mutable object Demo_018{ def main(args: Array[String]): Uni ...

  5. linux下top命令详细介绍

    linux下top命令详细介绍 top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu.内存的使用)占用状况,top命令的执行结果是一个动态显 ...

  6. 启动tomcat出现闪退的原因

    出现闪退的可能有几点: 1.没有安装jdk或者配置jdk是否配置成功 2.找不到jdk安装的路径 3.tomcat环境配置失败 如果是第二点原因(确保第一第三点配置都正确无误)找不到jdk路径的话,可 ...

  7. Locust性能测试1--简介安装及基本使用

    1. Locust简介 Locust是易于使用的分布式用户负载测试工具,旨在对网站(或其他系统)进行负载测试,并弄清一个系统可以处理多少个并发用户,Locust翻译过来是蝗虫的意思,在测试期间,意在一 ...

  8. Jenkins匿名用户设置

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

  9. SpringCloud Alibaba Nacos 服务治理中心

    目录 一.什么是Nacos? 二.Nacos能干吗? 三.Nacos关键特性 四.Nacos中的基本概念 五.如何安装部署Nacos? 六.Nacos数据持久化 一.什么是Nacos? 英文全称Dyn ...

  10. Python中的协程,为什么说它的底层是生成器?

    我们曾经在golang关于goroutine的文章当中简单介绍过 协程 的概念,我们再来简单review一下.协程又称为是微线程,英文名是Coroutine.它和线程一样可以调度,但是不同的是线程的启 ...