python学习笔记-(四)列表&元组
1.列表及元组操作
1.1 列表
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
定义列表:
>>> namelist = ['cc','uu','tt','yy','nn']
变量namelist
就是一个list。用len()
函数可以获得list元素的个数:
>>> print(len(namelist))
1.1.1 list取值
用索引来访问list中每一个位置的元素,记得索引是从0
开始的:
print(namelist[0])
cc
>>> print(namelist[1])
uu
>>> print(namelist[2])
tt
>>> print(namelist[3])
yy
>>> print(namelist[4])
nn
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(namelist) - 1
。
如果要取最后一个元素,除了计算索引位置外,还可以用-1
做索引,直接获取最后一个元素:
>>> print(namelist[-1])
nn
以此类推,可以获取倒数第二个、第三个:
>>> print(namelist[-2])
yy
>>> print(namelist[-3])
tt
1.1.2 新增
追加元素--append
list是一个可变的有序表,可追加元素到末尾
>>> namelist = ['cc','tt','uu','yy']
>>> namelist.append('ll')
>>> print(namelist)
添加到指定位置--insert
>>> namelist.insert(1,'kk')
>>> print(namelist)
1.1.3 删除
删除末尾元素--pop()
>>> namelist.pop()
>>> print(namelist)
删除指定元素--pop(i)
>>> namelist.pop()
>>> print(namelist)
删除列表
del(list)是直接删除整个列表,再次打印列表时会报:NameError: name 'namelist' is not defined
>>> del(namelist)
>>> print(namelist)
删除指定元素--del
>>> del(namelist[0])
>>> print(namelist)
删除指定元素--remove
>>> namelist.remove('cc')
>>> print(namelist)
1.1.4 修改
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
>>> namelist[1] = 'rr'
>>> print(namelist)
1.1.5 切片
取多个元素就需要用到切片;
切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。记住:数是可选的,而冒号是必须的。
切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在结束位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。----顾头不顾尾
>>> namelist = ['cc','tt','uu','yy']
>>> print(namelist[1:3])#取下标1到3之间的值,包含1,不包含3
['tt', 'uu']
>>> print(namelist[0:3])#取下标0到3之间的值,包含0,不包含3
['cc','tt','uu']
>>> print(namelist[:3])#如果是0开头,可以省略0,同上句
['cc','tt','uu']
>>> print(namelist[0:])#想取最后一个,只能这么写
['cc','tt','uu','yy']
>>> print(namelist[::2])#从头取到尾,每隔一个元素就取一个
['cc', 'uu']
也可以用负数做切片,负数用在从序列尾开始计算的位置。
>>> print(namelist[0:-3])
['cc']
1.1.6 获取下标
可通过index查找元素,返回下标
>>> print(namelist.index('cc'))
0
也可通过找到的下标获取元素值---忘记他吧!
>>> print(namelist[namelist.index('cc')])
cc
1.1.7 统计
>>> namelist = ['ty','tuu','tu','ye','tu']
>>> print(namelist.count('tu'))
2
1.1.8 反转
>>> namelist = ['ty','tuu','tu','ye']
>>> namelist.reverse()
>>> print(namelist)
['ye', 'tu', 'tuu', 'ty']
1.1.9 排序
按照ascii码表排序
>>> namelist = ['ty','tuu','tu','ye']
>>> namelist.sort()
>>> print(namelist)
['tu', 'tuu', 'ty', 'ye']
1.1.10 扩展
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
>>> namelist1 = ['cc','tt','yy','uu']
>>> namelist2 = ['ww','ee','bb']
>>> namelist1.extend(namelist2)
>>> print(namelist1)
['cc', 'tt', 'yy', 'uu', 'ww', 'ee', 'bb']
2.元组
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
2.1 创建元组
>>> names = ('cc','uu','jack')
>>> print(names)
('cc', 'uu', 'jack')
创建空元组:
>>> names1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义:
>>> names2 = (50)#定义的不是元组,是50这个数!这是因为括号()既可以表示元组,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
>>> print(names2)
50 >>> names3 =(50,)
>>> print(names3)
(50,)
2.2 访问元组
元组也可以使用下标索引来访问元组中的值
>>> names = ('cc','nn','mack')
>>> print(names[1])
nn
>>> print(names[-1])
mack
>>> print(names[:2])
('cc', 'nn')
2.3 修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合:
>>> name1 = ('cc','nn')
>>> name2 = ('yy','uu')
>>> name3 = name1 + name2
>>> print(name3)
('cc', 'nn', 'yy', 'uu') 以下操作会报错,TypeError: 'tuple' object does not support item assignment
>>> name1[0] = 'tt'
>>> print(name1)
2.4 删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组:
>>> name = ('cc')
>>> del name
>>> print(name)
元组name已被删除,会报错,NameError: name 'name1' is not defined
2.5 “可变”的元组
>>> name = ('cc','nn',['tt','yy'])
>>> name[2][0] = 'uu'
>>> name[2][1] = 'ii'
>>> print(name)
元组的每个元素,指向永远不变.指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
2.6 打印下标
>>> name = ('cc','nn')
>>> print(name.index('cc'))
0
>>> print(name.index('nn'))
1
2.7 统计
>>> name = ('cc','nn','nn')
>>> print(name.count('nn'))
2
3.练习
程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
代码示例:
shopping_code = []
product_list =[
('iphone',8000),
('bike',800),
('car',20000),
('coff',30),
]
salary = input("请输入您的工资:")
if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list):
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_code.append(p_item)
salary -= p_item[1]
print("商品%s已被添加到购物车"% p_item[0])
print("剩余余额\033[31;1m%s\033[0m"% salary)
else:
print("您的余额只剩\033[31;1m%s\033[0m啦!买不了啊,哥!"% salary)
print("----购物车商品----")
for p in shopping_code:
print(p)
break
else:
print("您选择的商品%s不存在!请重新输入!" % user_choice)
elif user_choice == 'q':
print("----购物车商品----")
for p in shopping_code:
print(p)
print("您剩余余额是:%s" % salary)
break
else:
print("商品编号不正确,请重新输入!")
else:
print("工资输入错误,即将退出。。。。")
python学习笔记-(四)列表&元组的更多相关文章
- python学习笔记整理——列表
Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...
- python学习笔记之列表与元组
一.概述 python包含6种内建的序列,其中列表和元组是最常用的两种类型.列表和元组的主要区别在于,列表可以修改,元组则不能修改 使用上,如果要根据要求来添加元素,应当使用列表:而由于要求序列不可修 ...
- Python学习笔记_week2_列表、元组、字典、字符串、文件、i编码
一. 列表.元组 names=["A","B","C","D"] print(names) print(names[0] ...
- python学习笔记(列表、元组、购物车实例)
一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...
- python学习笔记(2)--列表、元组、字符串、字典、集合、文件、字符编码
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表和元组的操作 列表是我们以后最长用的数据类型之一,通过列表可以最方便的对数据实现最方便的存储.修改等操作 定 ...
- python学习笔记四--元组
一.元组: 1. 不可变更的列表 2. 从语法上,她们是编写在小括号里,不是方括号里,列表是编写在方括号里的 3. 圆括号也同时用于表达式,如果想说明这是一个元组,不是表达式,可以在value后,关闭 ...
- Python学习笔记四:列表,购物车程序实例
列表 切片 中括号,逗号分隔,可以一次取出多个元素,起始位置包括,结束位置不包括(顾头不顾尾) 如果取最后一个,而且不知道列表长度,可以使用负数(-1是最后一个,以此类推) 如果取最后几个,记住从左往 ...
- Python学习笔记只列表和元组
一.成员资格 1.检查某个字符是否在某个字符串中:'a' in 'absent' 2.获取数组的长度.最大.最小值: numbers=[100,54,345] len(numbers) //长度 ma ...
- python学习笔记-列表和字典
由于最近在看深度学习的代码,看到需要建立字典和列表来存储什么东西的时候,就想要去把字典和列表好好的了解清楚,其应用范围,差别,等等东西 首先我们来介绍,在python中存在如下的数据结构:列表list ...
- 记录我的 python 学习历程-Day03 列表/元组/rang
一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...
随机推荐
- Linux不重启的情况下添加硬盘
众所周知,SATA和SCSI是支持热插拔的,但是新装了这类支持热插拔的驱动器,系统不会马上识别的,往往我们需要重启系统来识别,但是有另外一种方法可以很方面的让系统识别新的设备.作为系统管理员,需要了解 ...
- ubuntu 下mysql中文乱码问题解决方案
mysql> show variables like 'character%';+--------------------------+----------------------------+ ...
- C#.NET里面抽象类和接口有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然 ...
- struts2的核心和工作原理
struts2的核心和工作原理 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计.技术优势 Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于clien ...
- 【BZOJ 2843】极地旅行社
复习一下$LinkCutTree$的模板. #include<cstdio> #include<cstring> #include<algorithm> #defi ...
- 神经网络dropout
训练集上面,加一个bool型的开关 做预测的时候,不需要打开开关,而是所有的数乘以p, 实际工业界做的时候是: 在训练的时候都除以p,在做预测的时候什么时候都不用干
- android 概述 及四大组件
目录: 概述 四大组件 UI布局 概述 android studio中,gen很bin文件夹合并为built文件夹 四大组件 包括: 活动,服务,内容提供者,广播接收者 活动是一种包含用户界面的组件 ...
- Entity Framework Code First (六)存储过程
声明:本文只针对 EF6+ 默认情况下,Code First 对实体进行插入.更新.删除操作是直接在表上进行的,从 EF6 开始你可以选择使用存储过程(Stored Procedures) 简单实体映 ...
- OneThink学习笔记01
OneThink1.0开发手册: http://document.onethink.cn/manual_1_0.html 简介 OneThink是一个开源的内容管理框架,基于最新的ThinkPHP3 ...
- bzoj4381: [POI2015]Odwiedziny
这题搞了我一下午……因为一些傻X的问题…… 对于步长大于sqrt(n)的询问,我们可以直接暴力求解 然后,我们可以事先预处理出d[u][step]表示u往上跳,每次跳step步,直到跳到不能跳为止,所 ...