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']
原文地址:https://www.cnblogs.com/zhangjunkang/p/9393635.html