我的Python自学之路-001 列表的知识
#_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 列表的知识的更多相关文章
- 我的Python自学之路-003 字符串的知识
'''字符串是以引号或者单引号括起来的任意文本,例如"123","asdfjk",'adfa'引号或者单引号,只是一种表示方法,并不是字符串的一部分如果字符串本 ...
- 我的Python自学之路-002 字典的知识
'''字典是python中唯一的验证类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算.根据计算的结果决定value的存储地址.所以字典是无序存储的.且key必 ...
- Python自学之路---Day13
目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...
- Python自学之路---Day01
目录 Python自学之路---Day01 注释 单行注释 多行注释 print()函数 语法 参数 实例 input()函数 语法 参数 实例 查看Python的关键字 代码 变量与常量 变量 如何 ...
- python 自学之路-Day Two
Day1补充部分 模块初识 模块就是由其他人写好的功能,在程序需要的时候进行导入,直接使用,也叫库. 库有标准库和第三方库,所谓标准库,就是不需要安装就可以直接使用的,自带的:第三方库,就是需要进行下 ...
- python 自学之路-Day one
一.Python介绍 创始人吉多范罗苏姆(龟叔),脚本解释程序 应用领域广,数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等. 主要应用领域: 云计算:OpenStack: WEB开发:经 ...
- python学习之路04——列表和字典
列表和字典 python中的可变数据类型有:列表和字典 不可变类型:数字,字符串,元组 今天先讲列表和字典 一.列表 1.概念: 变量:使用变量存储数据,但是,变量存储数据每次只能存储一个数据 问题: ...
- Python学习之路2 - 列表和元组
列表 概念:Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 列表的使用 names = ['zhangsan','lisi','wangwu' ...
- Python自学之路
2020年春节,受新型冠状病毒影响,整个春节假期,全国人民都在恐慌之中,为了避免大家上班相互传染,公司号召国家政策,开始上班日期延迟,在家呆的实在太无聊,突然感觉自己不能浪费这美好的时光,决定学习Py ...
随机推荐
- 痞子衡嵌入式:利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT部分型号上新增的FlexSPI Remap功能. OTA升级设计几乎是每个量产客户都绕不开的话题,产品发布后免不了要做固件( ...
- Java反射概念与基础
反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...
- Robotium和Espresso大PK——速度篇
引言 Espresso和Robotium都是android UI自动化测试框架,且都是建立在Android Instrument的基础之上.对于测试人员来说,UI测试应该具备如下三个特点:1. 容易编 ...
- 第一篇 Scrum冲刺博客
一.Alpha任务认领 冯荣新 任务 预计时间 搜索框 0.5h 首页轮播图 0.5h 分类导航 2h 商品列表 2h 商品详情轮播图 0.5h 商品底部工具栏 1h 购物车列表 1.5h 购物车工具 ...
- Java多线程_并发容器ConcurrentHashMap/CopyOnWriteArrayList/CopyOnWriteArraySet
ConcurrentHashMap HashMap是线程不安全的,可以使用Collections.synchronizedMap(map)把一个不安全的map变成安全的,但是这里可以直 ...
- Java并发编程(08):Executor线程池框架
本文源码:GitHub·点这里 || GitEE·点这里 一.Executor框架简介 1.基础简介 Executor系统中,将线程任务提交和任务执行进行了解耦的设计,Executor有各种功能强大的 ...
- 《HelloGitHub》第 53 期
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...
- JS学习阶段性总结-1
各种函数的声明 /** * 函数的声明 */ // 声明一个方法,任意调用 function aaa(args){...} // 声明一个函数并以变量的形式展示出去,因此无法再声明前调用 var fn ...
- Java 将Html转为PDF
本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 可根据不同的系统来下载对应的插件,下载地址:windows-x86.zip, window ...
- 力扣Leetcode 45. 跳跃游戏 II - 贪心思想
这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...