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.练习

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
  4. 可随时退出,退出时,打印已购买商品和余额

代码示例:

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学习笔记-(四)列表&元组的更多相关文章

  1. python学习笔记整理——列表

    Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...

  2. python学习笔记之列表与元组

    一.概述 python包含6种内建的序列,其中列表和元组是最常用的两种类型.列表和元组的主要区别在于,列表可以修改,元组则不能修改 使用上,如果要根据要求来添加元素,应当使用列表:而由于要求序列不可修 ...

  3. Python学习笔记_week2_列表、元组、字典、字符串、文件、i编码

    一. 列表.元组 names=["A","B","C","D"] print(names) print(names[0] ...

  4. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  5. python学习笔记(2)--列表、元组、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表和元组的操作 列表是我们以后最长用的数据类型之一,通过列表可以最方便的对数据实现最方便的存储.修改等操作 定 ...

  6. python学习笔记四--元组

    一.元组: 1. 不可变更的列表 2. 从语法上,她们是编写在小括号里,不是方括号里,列表是编写在方括号里的 3. 圆括号也同时用于表达式,如果想说明这是一个元组,不是表达式,可以在value后,关闭 ...

  7. Python学习笔记四:列表,购物车程序实例

    列表 切片 中括号,逗号分隔,可以一次取出多个元素,起始位置包括,结束位置不包括(顾头不顾尾) 如果取最后一个,而且不知道列表长度,可以使用负数(-1是最后一个,以此类推) 如果取最后几个,记住从左往 ...

  8. Python学习笔记只列表和元组

    一.成员资格 1.检查某个字符是否在某个字符串中:'a' in 'absent' 2.获取数组的长度.最大.最小值: numbers=[100,54,345] len(numbers) //长度 ma ...

  9. python学习笔记-列表和字典

    由于最近在看深度学习的代码,看到需要建立字典和列表来存储什么东西的时候,就想要去把字典和列表好好的了解清楚,其应用范围,差别,等等东西 首先我们来介绍,在python中存在如下的数据结构:列表list ...

  10. 记录我的 python 学习历程-Day03 列表/元组/rang

    一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...

随机推荐

  1. vijos P1009清帝之惑之康熙

    </pre>背景康熙是中国历史乃至世界历史中最伟大的帝王之一,清除螯拜,撤除三藩,统一台湾,平定准葛尔叛乱:与此同时,出众的他也被世界各国遣清使臣所折服.康熙是历史上少有的全人,不仅文武兼 ...

  2. Centos|RHEL7以前解决网卡eth0相关问题

    网络-网络-有网才有络络,哈哈!学习在于不断记录,问题记录多了就成大牛了.当大牛达到一定层次,都会回馈社会.研发推出新的东东! CentOS找不到ifcfg-eth0解决方法 问题描述: ifconf ...

  3. android 之 Toast通知的使用

    1.默认效果:   代码: Toast.makeText(getApplicationContext(), "默认Toast样式",      Toast.LENGTH_SHORT ...

  4. 【CodeVS 1037】取数游戏

    http://codevs.cn/problem/1037/ Alice必胜是Alice将硬币移向边权为0的一端并且把经过的边变为0,让BoB无路可走. 这样只要起点到两个方向最近的0边权的端点的边数 ...

  5. 100726C

    显而易见,我们要找子串,每次记录前缀和,算出余数,然后通过一个数组保存余数,答案就是加上之前余数的总和,要注意整除的情况 #include<iostream> #include<cs ...

  6. 【USACO 2.1】Healthy Holsteins

    /* TASK: holstein LANG: C++ URL: http://train.usaco.org/usacoprob2?a=SgkbOSkonr2&S=holstein SOLV ...

  7. Xcode 修改工程名以及注意事项

    1.先把整个工程文件夹名改为新的工程名. 2.打开工程,单击,输入新的工程名,会出现,点击确定. 3.回到工程界面,在中选择 Manage Schemes,然后再弹出的对话框,把工程名改为新的名字. ...

  8. Hadoop 权威指南学习2 (Sqoop)

    6. Sqoop Apache sqoop is an open source tool that allow users to extract data from structured data s ...

  9. 77.Android之代码混淆

    转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使 ...

  10. NuGet打包推送批处理以及MSBuild(通用版)

    使用时注意每个批处理里面的依赖工具路径指向 源码:https://github.com/easonjim/NuGetRun bug提交:https://github.com/easonjim/NuGe ...