Python 学习 第三篇:数组类型(列表、字典和元组)
列表和字段都可以在原处进行修改,可以按照需求增长或缩短,并且可以包含任何类型的对象或被嵌套。列表和字典存储的是对象的引用,而不是拷贝。
一,列表
列表是有序的序列,每一个列表项的顺序是固定的,这使得列表可以通过指定的偏移来索引和分片。列表是可变的序列,支持在原处修改。
列表项可以是任何类型,或对象,也可以嵌套列表。
1,列表的创建
创建一个空的列表:
>>> l=[]
创建一个纯数字列表:
>>> l=[1,2,3]
创建一个数字和字符的混合类型列表:
>>> l=[1,2,'a']
创建一个嵌套对象的列表:
>>> l=[1,'a',[2,'b']]
>>> l
[1, 'a', [2, 'b']]
创建一个范围列表:
range() 函数用于创建一个整数列表,range函数语法:
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始,默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
使用range函数创建一个范围列表:
>>> list(range(1,10,2))
[1, 3, 5, 7, 9]
2,列表解析
使用列表解析,可以使用迭代器来生成列表:
>>> l=[x**2 for x in range(0,5)]
>>> l
[0, 1, 4, 9, 16]
3,列表的索引和分片
列表和字符串都是有序的序列,它们的索引和分片的格式很相似:
- l[i]:索引单个列表项
- l[i][j]:如果列表项是序列,那么可以使用多重索引
- l[i:j]:对列表分片
例如:对列表进行索引和分片
>>> l=[1,'a',[2,'b']]
>>> l[1]
'a'
>>> l[2]
[2, 'b']
>>> l[2][1]
'b'
>>> l[0:2]
[1, 'a']
二,列表操作
列表的长度是固定的,不能越界访问列表,列表的最大索引是列表长度-1,越界会导致Python报错。
1,追加
向列表的末尾追加一个列表项: list.append(obj)
>>> l.append(4)
[1, 'a', [2, 'b'], 4]
向列表的末尾追加一个序列: list.extend(seq)
>>> l.extend([3,5])
[1, 'a', [2, 'b'], 4, 3, 5]
2,插入
向列表的特定位置插入一个列表项:list.insert(index,obj)
>>> l.insert(2,'b')
[1, 'a', 'b', [2, 'b'], 4, 3, 5]
3,移除列表项
根据索引来删除列表中的元素,list.pop(index=-1),返回的是删除的列表项:
>>> l.pop(2)
'b'
>>> l
[1, 'a', [2, 'b'], 4, 3, 5]
根据索引来删除列表项,可以使用 del 命令来删除指定索引的列表项: del list[index]
>>> del l[5]
[1, 'a', [2, 'b'], 4, 3]
根据元素值来删除列表的元素,可以使用 list.remove(obj)函数, 从列表中删除值是obj的元素:
>>> l.remove(3)
4,修改列表项
由于列表是可变的,支持原处修改列表项,也就是说,可以通过索引直接修改列表对象。
>>> l[4]=l[4]+2
>>> l
[1, 'a', [2, 'b'], 4, 5]
5,对列表进行排序:list.sort()
当列表项具有可比性时,可以对列表进行排序,list.sort(reverse=False),
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
>>> sl=['a','c','e','d']
>>> sl.sort()
>>> sl
['a', 'c', 'd', 'e']
6,查看某一元素的索引 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
>>> l.index(5)
4
7,列表的其他操作
- 统计列表元素的数量:len(list)
- 列表的合并:list1+list2,生成新的列表
- 列表的重复:list*2,等价于 list+list,生成新的列表
- 列表的迭代: obj in list
+和* 会生成新的列表,而list.append(),list.sort(),list.xxx()等函数和del list[i]是在原处修改,不会生成新的列表。
参考文档:
Python 学习 第三篇:数组类型(列表、字典和元组)的更多相关文章
- Python 学习 第16篇:数据类型(字典和Json)
字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象. 字典有两个重要的特征: 字典是无序的,字典项没有特定的顺序,只能通过键来获取值: 字典是可变的,支持原处修改 ...
- Python学习第三篇——访问列表部分元素
dongman =["huoying","sishen","si wang bi ji","pan ni de lu lu xiu ...
- python学习Day8 三种字符类型、文件操作
复习 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5') | ...
- python学习第三天 --布尔类型
我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...
- Python学习笔记三,数组list和tuple
list也就是列表的意思,可以存储一组数据集合,比如classmates=['zhangsan','lisi','123']每个数据用单引号包裹,逗号隔开.
- Python学习第三篇——逻辑判定
request_foods=["tomato","beaf","milk"] for elements in request_foods: ...
- python学习(三)数字类型示例
奶奶的报了这个错,我以为可以像java中字符串加数字的嘛 Traceback (most recent call last): File "./number.py", line ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- python学习第三次记录
python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...
随机推荐
- Java 注解用法详解——@SuppressWarnings
转自: https://www.cnblogs.com/fsjohnhuang/p/4040785.html Java魔法堂:注解用法详解——@SuppressWarnings 一.前言 编码时我 ...
- jqGrid删除单条和多条数据
$("#Delete").click(function () { //var id = $("#showGrid").jqGrid('getGridParam' ...
- 免安装PostgreSQL启动服务及创建数据库
安装环境windows7 64位系统 免安装版本postgresql-10.3-1-windows-x64-binaries ===================================== ...
- MySQL索引背后的数据结构及算法原理(employees实例)
摘要 http://blog.codinglabs.org/articles/theory-of-mysql-index.html 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特 ...
- Linux 补丁生成与使用
我们在升级Linux 内核的时候,难免会接触到补丁的知识.下面对如何生成补丁和如何打补丁作讲解. 生成补丁: 制作 hello.c 和 hello_new.c 两个文件如如下所示. ➜ diff ls ...
- Windows API串口编程详解
(一)Windows API串口通信编程概述 Windows环境下的串口编程与DOS环境下的串口编程有很大不同.Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Window ...
- 使用C#删除一个字符串数组中的空字符串
C#中要如何才能删除一个字符串数组中的空字符串呢?随着微软对C#不断发展和更新,C#中对于数组操作的方式也变得越来越多样化.以往要实现过滤数组中的空字符串,都是需要实行循环的方式来排除和过滤.C#3. ...
- 2019 wannafly winter camp day 3
2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...
- eclipse 汉化详细方法
1.首先确认自己的 eclipse 是哪个版本,这个很关键,涉及到后面要用到的语言包需要与版本匹配,启动 eclipse,观察对应的版本号,比如我用的是 Photon 版本 2.参照官方给的方法进行下 ...
- 关于java中的使用通配符错误,错误信息Diamond types are not supported at language level '5‘
当时,我问了下大神,他们问我是不是jdk问题.因为jdk8才支持这样的棱形写法.当时自己的jdk版本是jdk8,然后就奇怪了,最后我发现原来在Language level中调成了5.0 5.0不支持6 ...