#_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. 一句话木马变形(截止2020年8月16日通杀D盾、安全狗,微步,webshellKiller)

    首先一句话木马: <?php assert($_POST['a']); ?> D盾扫描,5级 分开写: <?php $a = "assert"; $b = $_P ...

  2. MIT 6.828 Lab04 : Preemptive Multitasking

    目录 Part A:Multiprocessor Support and Cooperative Multitasking Multiprocessor Support 虚拟内存图 Exercise ...

  3. python读取数据文件:pandas包详解

    本文转载自https://blog.csdn.net/brucewong0516/article/details/79092579 pandas包是一个高效的文件读取工具,适用于txt,excel,等 ...

  4. neutron plugin 与 extension 编写流程

    原文链接:neutron plugin 与 extension 编写流程 参考: 怎样写 OpenStack Neutron 的 Plugin (一)怎样写 OpenStack Neutron 的 P ...

  5. selenium定位方法实例

    selenium定位方法实例 首先打开浏览器输入微博的网址,将网页最大化,等待3秒 from selenium import webdriver import time driver = webdri ...

  6. 【转】python调用youtube-dl实现视频下载

    youtube-dl是一个命令行程序,用于从YouTube.com和更多网站下载视频.它需要Python解释器,版本2.6,2.7或3.2+,并且支持Unix,Windows或Mac OS X中运行. ...

  7. MPI聚合函数

    MPI聚合通信 MPI_Barrier int MPI_Barrier( MPI_Comm comm ); 所有在该通道的函数都执行完后,才开始其他步骤. 0进程在状态T1调用MPI_Barrier函 ...

  8. shrio总结

    AccessControlFilter(https://www.jianshu.com/p/9bfa22b0e905) SpringBoot+Shiro学习之自定义拦截器管理在线用户(踢出用户)   ...

  9. 阿里面试竟如此轻松,2招带你过关斩将拿下offer

    在找工作之前首先是要认清一个问题,虽然这个问题比较俗,但是很现实,就是为什么追求高工资? 这个问题我想不用说大家心里也清楚.大部分人都不是当前城市的本地人,说好听了叫来上班,说的不好听其实叫“外来务工 ...

  10. frozenset冻结集合函数

    1.描述 frozenset()返回一个冻结的集合,冻结后不能添加.删除和修改. set()无序且不重复,是可以变的,有add.remove.扩展:删除重复数据,还可以计算交集.差集.并集等 2.函数 ...