目录
Python 数据类型(2)
1.序列
序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。
Python3 中一切皆对象,在内存中实际是按照如下方式存储的
a = [10,20,30,40]
从图示中,我们可以看出序列中存储的是整数对象的地址,而不是整数对象的值。python 中常用的序列结构有: 字符串、列表、元组、字典、集合
2.列表
列表是可变类型
列表:用于存储任意数目、任意类型的数据集合
列表是内置可变序列,是包含多个元素的有序连续的内存空间(序列)。
列表定义的标准语法格式: a = [10,20,30,40]。
10,20,30,40 这些称为:列表 a 的元素。 列表中的元素可以各不相同,可以是任意类型,如a = [‘abc’,20,True,‘你好’]
列表对象的常用方法
2.1列表的创建
2.1.1基本语法[]创建
a = [10,20,'abc','你好']
a = [] #创建一个空的列表对象
2.1.2list()创建
使用 list()可以将任何可迭代的数据转化成列表
>>> a = list() #创建一个空的列表对象
>>> a = list(range(10))
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = list("hello world")
>>> a
['h', 'e', 'l', 'l', '0', ' ', 'w', 'o', 'r', 'l', 'd']
2.1.3range()创建整数列表
range([start,] end [,step]) (取值范围 [ , ),起始值可以取,结尾值不可取 )
start 参数:可选,表示起始数字。默认是 0
end 参数:必选,表示结尾数字。
step 参数:可选,表示步长,默认为 1
range()返回的是一个 range 对象,而不是列表。需要通过 list()方法将其 转换成列表对象。
2.1.4推导式生成列表
使用列表推导式可以非常方便的创建列表
2.2列表元素的增加
当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这 个特点涉及列表元素的大量移动,效率较低。除非必要,一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。
2.2.1append()方法
列表结尾追加数据,追加一个序列时,整个序列加到列表结尾
列表序列.apptend(数据)
2.2.2+运算符操作
创建新的列表对象,将原列表的元素和新列表的元素依次复制到新的列表对象中。
通过如上测试,我们发现变量 a 的地址发生了变化。也就是创建了新的列表对象。
2.2.3extend()方法
列表结尾追加数据,如果数据是一个序列,则将序列数据逐一添加到列表。
列表序列.extend(数据)
2.2.4insert()插入元素
指定位置新增数据。
列表序列.insert(位置下标,数据)
2.2.5乘法扩展
使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复。
2.3列表元素的删除
2.3.1del 删除
删除列表指定位置的元素,可配合下标使用
>>> a = [100,200,888,300,400]
>>> del a[1]
>>> a
[100,200,300,400]
2.3.2pop()方法
pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。
2.3.3remove()方法
删除首次出现的指定元素,若不存在该元素抛出异常。
2.4列表元素查找和计数
2.4.1通过索引(下标)查找元素
name_list = ['Tom','Lily','Rose']
print(name_list[0]) #Tom
print(name_list[1]) #Lily
print(name_list[2]) #Rose
2.4.2index()获得指定元素在列表中首次出现的索引
返回指定数据所在位置的下标
列表序列.index(数据,开始位置,结束位置)
查找数据不存在会报错
2.4.3count()获得指定元素在列表中出现的次数
统计指定数据在当前列表中出现的次数
2.4.4len()返回列表长度
计算列表长度,即列表中数据个数
2.4.5判断元素是否存在
in:判断指定数据是否在某个序列,在返回True,否则False。
not in: 判断指定数据是否在某个序列,在返回False,否则True。
2.5切片操作
切片 slice 操作可以让我们快速提取子列表或修改。
标准格式为: [起始偏移量 start:终止偏移量 end:[步长 step]]
注:当步长省略时顺便可以省略第二个冒号.
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始 偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成”长度-1”。
2.6列表的遍历
2.7复制列表所有的元素到新列表对象
capy()
2.8列表排序
2.8.1修改原列表,不建新列表的排序
sort() ,默认是升序排列。sort(reverse=True),降序排列。
#打乱顺序
import random
random.shuffle(a)
2.8.2建新列表的排序
sorted()排序(默认升序),这个方法返回新列表,不对原列表做修改。
2.8.3reversed()返回迭代器排序
内置函数 reversed()也支持进行逆序排列,与列表对象 reverse()方法不同的是,内置函数 reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
2.9列表相关的其他内置函数汇总
max 和 min
用于返回列表中最大和最小值
sum
对数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错。
2.10多维列表(列表嵌套)
一维列表可以帮助我们存储一维、线性的数据。 二维列表可以帮助我们存储二维、表格的数据。
3.元组 tuple
元组属于不可变序列,不能修改元组中的 元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。
1. 通过()创建元组。小括号可以省略。
a = (10,20,30) 或者 a = 10,20,30
如果元组只有一个元素,则必须后面加逗号。解释器会把(1)解释为整数 1
2. 通过 tuple()创建元组
tuple(可迭代的对象)
3.生成器推导式创建元组
总结:
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。
3.1元组的元素访问和计数
下标
index():查找某个数据,数据存在返回对应下标,否则报错。
count():统计某个数据出现的次数
len():统计元组中数据的个数
排序
sorted(tupleObj),并生成新的列表对象。
3.2zip
zip(列表 1,列表 2,…)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象。