Python数据结构之列表类型(list)
数据结构之列表类型(list)
-
列表说明
-
索引和切片
-
增加元素到列表
-
删除列表元素
-
更改列表元素
-
查看列表元素
-
列表脚本操作符
-
列表截取与拼接
-
嵌套列表
-
列表内置函数
一、列表说明
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
列表是一个可变的数据类型
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
Python已经内置确定序列的长度以及确定最大和最小的元素的方法
列表的数据项不需要具有相同的类型
列表由 [ ] 来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象;
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
>>> li = ["zjk",123,"python"] >>> li2 = [1,2,3,4,5] >>> li3 = ["a","b","c"]
二、索引和切片
列表和字符串一样. 也有索引和切片. 只不过切出来的内容是列表;
索引的下标从0开始;
切片的表达形式:[起始位置:结束位置:步长]
二、增加元素到列表
向列表中添加元素有三种基本方法:
append()、insert()、extend()
1.append(obj),表示向列表的末尾追加一个元素obj,这个obj被当做一个整体添加到列表的末尾处;
例如:
>>> li = [1,2,3,4] >>> li.append("abc") >>> print(li) [1, 2, 3, 4, 'abc']
2.insert(index,obj),表示在索引index位置添加一个obj元素,obj元素是一个整体;
例如:
>>> li.insert(1,["a","b","c"]) >>> print(li) [1, ['a', 'b', 'c'], 2, 3, 4]
3.extend( iterable),表示向列表的末尾处添加一个可迭代对象,iterable被叠加到列表的末尾处;
例如:
>>> li = [1,2,3,4] >>> li.extend(["a","b","c"]) >>> print(li) [1, 2, 3, 4, 'a', 'b', 'c']
三、删除列表元素
删除列表中的元素有四种基本方法:
pop()、remove()、del 切片、clear()
1.pop(index),表示通过索引位置剪切走一个元素,
例子:
>>> li = [1,2,3,4] >>> a = li.pop(1) >>> print(li,a) [1, 3, 4] 2
2.remove(),搜索元素然后直接在列表中删除;
例子:
>>> li = [1,2,3,4] >>> li.remove(3) >>> print(li) [1, 2, 4]
3.del 切片,通过索引或切片的方式进行删除;
例子:
>>> li = [1,2,3,4] >>> del li[0] >>> print(li) [2, 3, 4] >>> del li[0:2] >>> print(li) [4]
4.clear(),清空整个列表;
例子:
>>> li = [1,2,3,4] >>> li.clear() >>> print(li) []
四、更改列表元素
1.索引修改;
例子:
>>> li = [1,2,3,4] >>> li[0] = "a" >>> print(li) ['a', 2, 3, 4]
2.切片修改:
这边需要注意的是,如果切片的步长为1,则不用关心赋值的参数问题,如果步长值不为1则是几就要添加几个参数;
例子:
----------------步长值为1,元素可以随意添加---------------------------
>>> li = [1,2,3,4] >>> li[1:3] = "abcdefg" >>> print(li) [1, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 4]
--------------步长值为2,元素必须是两个元素---------------------------- >>> li = [1,2,3,4] >>> li[0::2] = "abc","kkk" >>> print(li) ['abc', 2, 'kkk', 4]
五、查看列表元素
查询列表中的元素可以使用索引方式,也可以使用for循环的方式;
索引方式或切片方式查询:
例子:
-----------------索引方式-------------------------- >>> li[0::2] = "abc","kkk" >>> print(li) ['abc', 2, 'kkk', 4] ----------------切片方式--------------------------- >>> print(li[0:3]) [1, 2, 3]
for循环方式查询:
>>> li = [1,2,3,4] >>> for n in li: ... print(n) ... 1 2 3 4
六、列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
七、列表截取与拼接
八、嵌套列表
使用嵌套列表即在列表里创建其它列表,通过降维. 一层一层看;
>>> li = ["a","b","c",[1,2,3],7,8,"d"] >>> print(li[1]) b >>> print(li[3]) [1, 2, 3] >>> print(li[3][2]) 3
九、列表内置函数
1.append(self, p_object)
说明:用于在列表末尾添加新的对象;
语法:list.append(obj)
参数:obj ----------> 添加到列表末尾的对象;
返回值:该方法无返回值,但是会修改原来的列表。
实例:
>>> li = [1,2,3] >>> li.append("abc") >>> print(li) [1, 2, 3, 'abc']
2.clear(self)
说明:用于清空列表,类似于 del a[:]
语法:list.clear()
实例:
>>> print(li) [1, 2, 3, 'abc'] >>> li.clear() >>> print(li) []
3.copy(self)
说明:用于浅复制列表,类似于 a[:];
语法:list.copy()
返回值:返回复制后的新列表;
实例:
>>> li1 = ["a","b",[1,2,3],"c"] >>> li2 = li1.copy() >>> print(li2) ['a', 'b', [1, 2, 3], 'c'] >>> print(id(li1),id(li2)) 139844385179656 139844384906184
#可以看出两个列表的内存地址是不一样的 >>> print(id(li1[2][0]),id(li2[2][0])) 139844383671616 139844383671616
#可以看出里面的内容地址是一样的
4.count(self, value)
说明:用于统计某个元素在列表中出现的次数
语法:list.count(obj)
参数:obj -------> 列表中统计的对象;
返回值:返回元素在列表中出现的次数;
实例:
>>> li = ["a","b","c","a",1,8,"a"] >>> print(li.count("a")) 3
5.extend(self, iterable)
说明:用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表);
语法:list.extend(seq)
参数:seq --------> 元素列表,必须是一个可迭代对象;
返回值:该方法没有返回值,但会在已存在的列表中添加新的列表内容。
实例:
>>> li = [1,2,3,4] >>> li2 = [5,6,7,8] >>> li.extend(li2) >>> print(li) [1, 2, 3, 4, 5, 6, 7, 8]
6.index(self, value, start=None, stop=None)
说明:用于从列表中找出某个值第一个匹配项的索引位置。
语法:list.index(value)
参数:value --------> 查找的对象;
返回值:返回查找对象的索引位置,如果没有找到对象则抛出异常;
实例:
>>> li = ["a","b","c","a"] >>> print(li.index("a")) 0
>>> print(li.index("a",1))
3
7.insert(self, index, p_object)
说明:用于将指定对象插入列表的指定位置;
语法:list.insert(index,p_object)
参数:index ------> 对象p_object需要插入的索引位置;
p_object ----> 要插入列表中的对象;
返回值:该方法没有返回值,但会在列表指定位置插入对象;
实例:
>>> li = ["a","b","c","a"] >>> li.insert(1,"尼玛的") >>> print(li) ['a', '尼玛的', 'b', 'c', 'a']
8.pop(self, index=None)
说明:用于根据索引移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,相当于剪切;
语法:list.pop(index)
参数:index -------> 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值;
返回值:该方法返回从列表中移除的元素对象;
实例:
>>> li = ["a","b","c","a"] >>> a = li.pop(2) >>> print(li) ['a', 'b', 'a'] >>> print(a) c
9.remove(self, value)
说明:用于根据元素值移除列表中某个值的第一个匹配项;
语法:list.remove(value)
参数:value --------> 列表中要移除的元素
返回值:该方法没有返回值但是会移除两种中的某个值的第一个匹配项。
实例:
>>> li = ["a","b","c","a"] >>> a = li.remove("a") >>> print(li) ['b', 'c', 'a']
10.reverse(self)
说明:用于反向列表中元素;
语法:list.reverse()
返回值:该方法没有返回值,但是会对列表的元素进行反向排序;
实例:
>>> li = ["a","b","c","a"] >>> li.reverse() >>> print(li) ['a', 'c', 'b', 'a']
11.sort(self, key=None, reverse=False)
说明:用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
语法:list.sort(key=None, reverse=False)
参数:key ------> 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -----> 指定排序规则,默认为升序,reverse = True 降序, reverse = False 升序(默认);
返回值:该方法没有返回值,但是会对列表的对象进行排序;
实例:
>>> li = ["Ack","Ync","seq"] >>> li.sort(reverse = True) >>> print(li) ['seq', 'Ync', 'Ack']