内置数据结构(list)
列表、元组、字符串、字典和集合是python内置的数据结构,也可以叫内置容器。前3个是线性结构,线性结构可以切片操作、解包和封包操作。
dir()方法可以查看对象拥有哪些属性和方法。
help()方法可以查看一个方法的原形。
len()方法可以返回列表、元组中元素的个数。
id()方法查看一个变量的id值。
一、列表(list)
lt = list() #定义一个空列表
lt = [] #同上
lt = [1, 2, 3, 4, 5]
1.索引操作
列表的索引是从0开始。负数索引表示从后往前,由-1开始,-1表示最后一个元素。如果索引超出范围,将抛出一个IndexError异常。
lt[0] #结果为:1
lt[-2] #结果为:4
lt[9] Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
lt[9]
IndexError: list index out of range
#修改指定索引的值,当超出索引范围时,抛出一个IndexError异常。
lt[0] = 6 #lt结果为: [6, 2, 3, 4, 5]
lt[9] Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
lt[9]
IndexError: list index out of range
二、list的属性和方法
1.append方法是向列表追加一个元素,返回值是None
lt.append(8)
2.insert方法是在指定索引处插入一个元素,如果指定的正索引值超过索引范围就在末尾追加元素。如果指定的负索引在索引范围就从右向左的对应位置,但指定的负索引不在索引范围就在列表的0索引位置插入一个元素。
lt = [1, 2, 3, 4, 5]
lt.insert(40,33)
lt.insert(-2,88)
lt.insert(-40,333) lt列表的结果为:[333, 1, 2, 3, 4, 88, 5, 33]
3.extend方法是把一个列表追加到另外一个列表中
lt.extend([44, 55, 66])
4.pop方法是在列表最后删除一个元素,也可以指定索引来删除元素,并返回删除的元素。索引默认为-1,如果index超出索引范围会出了IndexError异常。
lt.pop()
lt.pop(33) Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
lt.pop(33)
IndexError: pop index out of range
5.remove方法是删除最近一个相对应的值,如果指定的值不在列表中就抛出一个ValueError异常。
lt.remove(2)
lt.remove(98) Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
lt.remove(98)
ValueError: list.remove(x): x not in list
6.clear方法是清除列表中的所有元素,变成一个空列表。
lt.clear()
7.index方法通过值查找最近的一个索引,也可以指定查找范围。如果指定的索引不在索引范围内就抛出一个ValueErro异常。
lt.index(44)
lt.index(90) Traceback (most recent call last):
File "<pyshell#36>", line 1, in <module>
lt.index(90)
ValueError: 90 is not in list
8.count方法通过值统计在列表中出现过多少次。如果不存在就返回0
lt.count(2)
9.sort方法对列表进行排序操作。也可以指定参数reverse和key,如果reverse=True时为倒排序。
lt.sort()
10.reverse()方法把一个列表倒排。
lt.reverse()
11.copy方法是复制一个新列表。
lt2 = lt.copy()
三、列表的切片操作
lt = list(range(20)) print(lt[0:8])
#结果:[0, 1, 2, 3, 4, 5, 6, 7] print(lt[-8:-2])
#结果:[12, 13, 14, 15, 16, 17] print(lt[-8:-5])
#结果:[12, 13, 14] #注意 切片操作总是从左向右,所以左边要小于右边,反知得到一个空列表。左边超出索引范围从0开始,右边超出索引范围取到
列表最后一个元素。
print(lt[:12])
#结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] print(lt[2:])
#结果:[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
print(lt[::2])
#结果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
print(lt[::-1])
#结果:[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
#可以为切片设置步长。当步长为负数时,从后往前,此时应该左边大于右边,否则返回一个空列表。
lt = list(range(10)) lt[3:5] = ['a', 'b']
print(lt)
#结果:[0, 1, 2, 'a', 'b', 5, 6, 7, 8, 9] lt[2:4] = 'x'
print(lt)
#结果:[0, 1, 'x', 'b', 5, 6, 7, 8, 9] lt[2:4] = ['a', 'b', 'c', 'd']
print(lt)
#结果:[0, 1, 'a', 'b', 'c', 'd', 5, 6, 7, 8, 9] #对于切片赋值时,会替换切片原来的元素。如果不连续的切片赋值时,需要有相同个数的值。
四、解包和封包
1.解包
把一个列表或者元组,同时赋值给多个变量时,称为解包。
如果等于号左边的变量个数少于右边的个数时,需要使用带“*”的变量。如果不需要一个值时可以用一个下划线来代替一个变量。如果不需要多于的值时,可以使用带“_"的星号。
x = 1
y = 2
x, y = (y, x)
print(x, y)
#结果:2 1
lt = list(range(20))
x, *y = lt
print(x,y)
#结果:0 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
x, *_, y = lt
print(x, y)
#结果:0 19
lt = [1,[2,3,4,5],6]
a,(b,*_,c),d=lt
print(a,b,c,d)
#结果:1 2 5 6
#只要等于号左边和右边的结构相同就能赋值成功。
2.封包
把多个变量,同时赋值给一个变量构建成一个元组时,称为封包。
t = x , y
print(type(t))
#结果:<class 'tuple'>
内置数据结构(list)的更多相关文章
- 【Redis源代码剖析】 - Redis内置数据结构之压缩字典zipmap
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51111230 今天为大家带来Redis中zipmap数据结构的分析,该结构定义在 ...
- Python的4个内置数据结构
Python提供了4个内置数据结构(内置指可以直接使用,无需先导入),可以保存任何对象集合,分别是列表.元组.字典和集合. 一.列表有序的可变对象集合. 1.列表的创建例子 list1 = []lis ...
- python面试总结4(算法与内置数据结构)
算法与内置数据结构 常用算法和数据结构 sorted dict/list/set/tuple 分析时间/空间复杂度 实现常见数据结构和算法 数据结构/算法 语言内置 内置库 线性结构 list(列表) ...
- Python第五章-内置数据结构05-集合
Python内置数据结构 五.集合(set) python 还提供了另外一种数据类型:set. set用于包含一组无序的不重复对象.所以set中的元素有点像dict的key.这是set与 list的最 ...
- Python第五章-内置数据结构01-字符串
Python 内置的数据结构 到目前为止,我们如果想保存一些数据,只能通过变量.但是如果遇到较多的数据要保存,这个时候时候用变量就变的不太现实. 我们需要能够保存大量数据的类似变量的东东,这种 ...
- Python的内置数据结构
Python内置数据结构一共有6类: 数字 字符串 列表 元组 字典 文件 一.数字 数字类型就没什么好说的了,大家自行理解 二.字符串 1.字符串的特性(重要): 序列化特性:字符串具有一个很重要的 ...
- python的四种内置数据结构
对于每种编程语言一般都会规定一些容器来保存某些数据,就像java的集合和数组一样python也同样有这样的结构 而对于python他有四个这样的内置容器来存储数据,他们都是python语言的一部分可以 ...
- Python内置数据结构--列表
本节内容: 列表 元组 字符串 集合 字典 本节先介绍列表. 一.列表 一种容器类型.列表可以包含任何种类的对象,比如说数字.子串.嵌套其他列表.嵌套元组. 任意对象的有序集合,通过索引访问其中的元素 ...
- Python内置数据结构之字符串str
1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...
随机推荐
- nginx 学习笔记(5) nginx调试日志
为启动一个调试日志,nginx需要在构建时配置城支持调试模式. ./configure --with-debug ... 而且调试级别应该使用err_log指令来设置: err_log /path/t ...
- Docker中“TERM environment variable not set.”问题
在使用top查容器内部资源利用情况时候,发现无法使用,报“TERM environment variable not set.”错误.从网上找到了解决方案,经实验有效 root@103b5f05462 ...
- sql语句中出现笛卡尔乘积 SQL查询入门篇
2014-12-29 凡尘工作室 阅 34985 转 95 本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 ...
- DotNet Core 2.0部署后外网IP访问
将DotNet Core2.0项目部署在Ubuntu上并且运行后,可以用localhost:5000来访问. 但是如果这时候用外网来访问就不行了. 这时候就有两种解决方案,第一种是用Nginx做代理实 ...
- SVN版本控制——SVN 合并的六种方式
合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里.如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分 ...
- request:fail 小程序要求的 TLS 版本必须大于等于 1.2
把以下代码复制到txt后,把后缀改成reg扩展名的文件,然后双击运行一下,运行完后重启一下服务器,就可以了. Windows Registry Editor Version 5.00 [HKEY_LO ...
- SpringMVC中数据转换
SpringMVC中接收到的数据都是String形式,然后再根据反射机制将String转换成对应的类型.如果此时想接收一个Date类型,那么我们可以定义一个转换器来完成. 例如,我们有下面的Emp类: ...
- java 获取两个日期之间的所有日期(年月日)
前言:直接上代码 java 获取两个日期之间的所有日期(年月日) /** * 获取两个日期之间的日期,包括开始结束日期 * @param start 开始日期 * @param end 结束日期 * ...
- MySQL中的存储过程和函数
存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...
- webstorm修改文件,webpack-dev-server及roadhog不会自动编译刷新
转自:http://www.cnblogs.com/ssrsblogs/p/6155747.html 重装了 webstorm ,从10升级到了2016 一升不要紧,打开老项目,开启webpakc-d ...