python数据类型二(列表和元组)
一、列表
1.1 列表的介绍
列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类型,比如以下示例:
lst = [1,'哈哈','abc',[1,8,0,"百度"],("我","叫","元组"),{"我叫":"dict字典"},{"我叫集合","集合"}]
列表相比于字符串,不仅可以存放不同的数据类型,而且可以存放大量的数据,32位python可以存放536870912个元素,64位可以存放1152921504606846975个元素,而且列表是有序的(按照你保存的顺序),有索引,可以切片,方便取值。
1.2 列表的索引和切片
列表和字符串一样也拥有索引,如下示例:
lst = ["王力宏","周渝民","黄渤","黄磊","刘涛"]
print(lst[0]) # 获取第一个元素,即结果为:王力宏
print(lst[1])
print(lst[2])
lst[3] = "刘宪华" # 注意:列表是可以发生改变的,这点和字符串有区别
print(lst) # 结果为:['王力宏', '周渝民', '黄渤', '刘宪华', '刘涛']
# 而字符串不能通过索引改变,否则报错,如下代码
str = '孙红雷'
str[0] = '王' # 报错提示为 TypeError: 'str' object does not support item assignment
注意:列表是可以发生改变的,这点和字符串不一样,字符串不能通过索引去改变值。
列表也可以切片,同字符串的切片规则一样,切出来的内容是列表类型,具体如下示例:
lst = ["王力宏","周渝民","黄渤","黄磊","刘涛"]
print(lst[0:3]) # ['王力宏', '周渝民', '黄渤']
print(lst[:2]) # ['王力宏', '周渝民']
print(lst[1::2]) # ['周渝民', '黄磊']
print(lst[2::-1]) # ['黄渤', '周渝民', '王力宏']
print(lst[-1:-5:-2]) # ['刘涛', '黄渤']
二、列表的增、删、改、查
注意:列表(list)和字符串(str)是不一样的,lst可以发生改变,所以直接就在原来的对象上进行了操作。
2.1 增
列表的增加操作有:append,insert,extend,具体用法如下示例:
lst = ['王力宏','周渝民','黄渤','黄磊']
lst.append('孙红雷') # 在末尾追加,每次只能增加一个元素
print(lst) # ['王力宏', '周渝民', '黄渤', '黄磊', '孙红雷'] lst.insert(1,'李晨') # 在指定index的位置插入指定元素
print(lst) # ['王力宏', '李晨', '周渝民', '黄渤', '黄磊', '孙红雷'] lst.extend(['杨颖','邓超','陈赫']) # 迭代添加,一次可以增加多个元素
print(lst) # ['王力宏', '李晨', '周渝民', '黄渤', '黄磊', '孙红雷', '杨颖', '邓超', '陈赫']
注意:数字和bool值是不可以用extend添加的,因为他们不是可迭代对象。
2.2 删除
列表的删除操作有:pop,remove, clear,del,具体用法如下示例:
lst = ['王力宏','周渝民','黄渤','黄磊']
print(lst.pop(0)) # 删除索引为0的元素,返回所删除的元素,结果为:王力宏
print(lst) # 列表内容变为['周渝民','黄渤','黄磊'] lst.remove('周渝民') # 删除指定元素,返回值为None , 注意:remove删除一个不存在的元素会报错
print(lst) # 列表内容变为['黄渤', '黄磊'] lst.clear() # 清空列表
print(lst) # lst变为一个空列表,结果为:[] # 切片删除
lst = ['王力宏','周渝民','黄渤','黄磊']
del lst[1:3] # 删除索引为1和2的元素
print(lst) # 结果为:['王力宏','黄磊']
注意:pop没有参数默认删除最后一个元素。remove('元素')删除一个不存在的元素会报错。
2.3 修改
列表可以通过索引和切片修改。具体如下示例代码:
lst1 = ['王者农药','魔兽世界','DNF','逆水寒','反恐精英']
lst1[0] = '扫雷' # 把索引为0的元素改为 '扫雷'
print(lst1) # ['扫雷', '魔兽世界', 'DNF', '逆水寒', '反恐精英'] lst1[1::2] = ['qq华夏','qq三国'] # 切片修改时,如果步长不是1,则要注意元素个数
print(lst1) # 结果为:['扫雷', 'qq华夏', 'DNF', 'qq三国', '反恐精英'] lst1[1:3] = ['泡泡卡丁车']
print(lst1) # 结果为:['扫雷', '泡泡卡丁车', 'qq三国', '反恐精英']
列表通过切片修改可理解为先删除再迭代添加。
注意:当切片修改时,若步长不是1,则要注意元素个数是否匹配,不匹配会报错。
2.4 查询
列表是一个可迭代对象,所以可以进行for循环,代码如下:
for el in lst:
print(el)
2.5 其他操作
列表的其他操作有:sort,reverse,len,具体用法如下示例:
lst = [1,34,20,6,89,4,66]
lst.sort() # 排序,默认升序
print(lst) # [1, 4, 6, 20, 34, 66, 89] lst.sort(reverse=True)
print(lst) # [89, 66, 34, 20, 6, 4, 1] lst1 = ['张三','李四','李红','赵明','王刚','孙进']
lst1.reverse()
print(lst1) # ['孙进', '王刚', '赵明', '李红', '李四', '张三']
列表的长度可以用len(lst)。
三、列表的嵌套
采用降维操作,一层一层的看就好。示例如下:
lst = [1,'太白','wusir',['马虎疼',['可口可乐'],'王健林']]
print(lst[2]) # wusir
print(lst[1:3]) # ['太白', 'wusir']
print(lst[1][1]) # 白 lst[2] = lst[2].capitalize()
print(lst) # [1, '太白', 'Wusir', ['马虎疼', ['可口可乐'], '王健林']] lst[3][0] = lst[3][0].replace('虎','化')
print(lst) # [1, '太白', 'Wusir', ['马化疼', ['可口可乐'], '王健林']]
四、元组和元组的嵌套
元组:俗称不可变的列表,又被称为只读列表,元组也是python的基本数据类型之一,用小括号()括起来,里面可以放任何数据类型的数据,可以查询,也可以循环,也可以切片,但就是不能改。具体示例如下代码:
tu = ("土豆丝","拍黄瓜","鱼香肉丝","红烧肉","小炒肉")
print(tu[0]) # 返回索引为0的元素
print(tu[1])
print(tu[2:5]) # 切片之后还是元组类型
尝试修改元组则会报错,如下代码:
tu[1] = "锅包肉" # 报错TypeError: 'tuple' object does not support item assignment
关于不可变,注意:这里元组不可变的意思是子元素不可变,而子元素内部的子元素是可以变的,这取决于子元素是否是可变对象。如下代码示例:
tu = (1,'哈哈',[],'呵呵')
# tu[2] = ['hello'] # 报错 TypeError: 'tuple' object does not support item assignment
tu[2].append('hello')
print(tu) # (1, '哈哈', ['hello'], '呵呵')
元组中如果只有一个元素,一定要添加一个逗号,否则就不是元组。如:tu = (1,)
空元组用 tu = tuple()表示。
元组也是可迭代对象,所以也可以用for循环遍历元组,代码如下:
for el in tu:
print(el)
元组也有count(),index()等方法。
五、range
range可以帮我们获取到一组数据,通过for循环能够获取到这些数据。具体示例如下:
# range()是一个可迭代对象
for i in range(10): # range(n) 0 -> n-1
print(i) for i in range(1,10): # range(m,n) m -> n-1
print(i) for i in range(1,10,3): # range(m,n,q) m -> n-1 每q个取一个
print(i) for i in range(100,90,-1): # 倒着取
print(i) # 0 1 2 3 4 5
lst = ['砂锅','馒头','盖浇饭','刀削面','大麻花','大煎饼']
# 获取到列表的索引,拿到索引之后,可以拿到元素
for i in range(len(lst)):
print(i) # i就是lst的索引
print(lst[i])
python数据类型二(列表和元组)的更多相关文章
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- Python数据类型(列表和元组)
1.3 List(列表) 列表由一系列按特定顺序排列的元素组成. 在Python中,用方括号[ ]来表示列表,并用逗号来分隔其中的元素. 1.3.1 访问列表元素 在Python中,第一个列表元素的索 ...
- python基本数据类型之列表和元组
python基本数据类型之列表与元组 python中list与tuple都是可以遍历类型.不同的是,list是可以修改的,而元组属于不可变类型,不能修改. 列表和元组中的元素可以是任意类型,并且同一个 ...
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
- python 变量、列表、元组、字典
python 变量.列表.元组.字典 1.python 变量赋值 2.ptython 列表 3.python 元组 4.python 字典 1. Python变量赋值 1.1变量的命名规 ...
- Python 学习笔记(1)Python容器:列表、元组、字典与集合
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...
- python数据类型:列表List和Set
python数据类型:列表List, Set集合 序列是Python中最基本的数据结构 序列中每个元素都分配一个数字,表示索引 列表的数据项不需要具有相同的类型 列表中的值可以重复并且有 ...
- python基础知识3——基本的数据类型2——列表,元组,字典,集合
磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...
- Python数据类型list(列表)和tuple(元组)
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
随机推荐
- 快速解读GC日志
本文是 Plumbr 发行的 Java垃圾收集指南 的部分内容.文中将介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息.我们通过 -XX:+UseSerialGC 选项,指定JVM ...
- javascript断点设置和调试
JS调试必备的5个debug技巧http://www.jb51.net/article/47812.htm Chrome 中的 JavaScript 断点设置和调试技巧http://www.xuebu ...
- windows下控制台程序更改图标和加载资源文件
1.在空项目的Resouce FIles中右击创建一个新的.rc文件. 2.选中这个.rc文件右击在界面中选择导入icon 3.选中icon,将icon的ID更改为IDC_MAINFRAME. 4.重 ...
- 跑测试没有web环境的情况
有时候 当你跑测试的main方法的时候,会有一些莫名其妙的错误,明明mave pom的包是全的,web跑起来不会报错,可是在main方法下就是报错了,这个时候引入 <dependency> ...
- session用户账号认证(一个用户登陆,踢出前一个用户)
在web.xml中配置: <listener> <listener-class>cn.edu.hbcf.common.listener.SessionAttributeList ...
- GEEK学习笔记— —程序猿面试宝典笔记(二)
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...
- TCP/IP详解读书笔记:概述
分层 分层是一种很通用的架构模式.通过分层,可以把一个系统分解成多个层,每个层专注于各自的功能,并提供接口给上面的层调用.上面的层不需要了解调用层的详细实现,只依赖于其接口,这就给维护带来了很大的好处 ...
- pycharm-community-3.1.1.tar.gz下载
国外服务器着实慢, 下载地址:http://yun.baidu.com/share/link?shareid=2521912381&uk=3020189984
- 全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充
1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 O ...
- thinkphp nginx 上配置 并解决get获取到数据现象
server { listen 80; server_name XXXX.funova.net XXX.funova.com; root /opt/newgm; index index.php; lo ...