列表的创建、特点以及内存分析
列表的创建(3种方式和推导式创建列表方法):
1.基本语法[]创建
>>>a=[10,20,30,40]
>>>a=[] #创建一个空的列表对象
2.list()创建
使用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', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
3.range()创建整数列表
range()可以帮我们非常方便的创建整数列表,这在开发中及其有用,语法格式:
range([start,],end.[,step])
start 参数:可选,表示起始数字,默认为0
end 参数:可选,表示结尾数字
step 参数: 可选,表示步长,默认为1
Python3中range()发回的是一个range对象,而不是一个列表,我们需要通过list()方法将其转换成列表对象。
例子:
>>>list(range(3,15,2))
[3,5,7,9,11,13]
>>>list(range(10,3,-1))
[10, 9, 8, 7, 6, 5, 4]
>>>list(range(3,-10,-1))
[3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
4.推导式生成列表(简单介绍一下)
使用列表推导式非常方便的创建列表,在开发中经常使用。
例子:
>>>a=[x*2 for x in range(5)]
>>>a
[0, 2, 4, 6, 8]
>>>a=[x*2 for x in range(100) if x%9==0] #通过if过滤元素
>>>a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
序列:
序列是一种数据存储方式,用来存储一系列的数据,在内存中,序列就是一块用来存放多个值得连续的内存空间,比如一个整数序列[10,20,30,40],可以这样表示:
10 | 20 | 30 | 40 |
由于Python3中一切皆对象,在内存中实际是按照如下方式存储的
a=[10,20,30,40]
从图中,可以看到序列中存储的是整数对象的地址,而不是整数对象的值,python中常用的序列结构有:
字符串,列表,元组,字典,集合
列表:用于存储任意数目、任意类型的数据集合
列表是内置可变序列,是包含多个元素的有序连续的内存空间,列表定义的标准语法格式:
a=[10,20,30,40]
其中,10,20,30,40这些称为,列表a的元素。
列表中的元素可以各不相同,可以任意类型,比如:
a=[10,20,30,"ab","cd",True]
列表对象的常用方法汇总,如下:
方法 | 要点 | 描述 |
list.append(x) | 增加元素 | 将列表元素x增加到列表list尾部 |
list.extend(aList) | 增加元素 | 将列表alist所有元素加到列表list尾部 |
list.insert(index,x) | 增加元素 | 在列表list指定位置inidex处插入元素x |
list.remove(x) | 删除元素 | 在列表list中删除首次出现的指定元素x |
list.pop([index]) |
删除元素 | 删除并返回列表list指定为止index处的元素,默认是最后一个元素 |
del list[index] | 删除元素 | 按照列表list的index删除元素 |
list.clear() | 删除所有元素 | 删除列表所有元素,并不是删除列表对象 |
list.index(x) | 访问元素 | 返回第一个x的索引位置,若不存在x元素抛出异常 |
list.count(x) | 计数 | 返回指定元素x在列表list中出现的次数 |
len(list) | 列表长度 | 返回列表中包含元素的个数 |
list.reverse() | 旋转列表 | 所有元素原地旋转 |
list.sort() | 排序 | 所有元素排序 |
list.copy() | 浅拷贝 | 返回列表对象的浅拷 |
Python的列表大小可变,根据需要随时增加或者缩小。 字符串和列表都是序列,一个字符串是一个字符序列,一个列表适任何元素的序列。 很多字符串的方法,在列表中也有类似的用法,几乎一模一样。