码迷,mamicode.com
首页 > 编程语言 > 详细

听说Python列表很难学,一个思维导图就够了

时间:2020-12-16 12:46:08      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:默认   位置   固定   chm   term   腾讯云   引用   拷贝   ted   

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云 作者:咸鱼学Python

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )
技术图片

列表

列表(List)是Python中非常重要的内置数据类型。列表由一系列元素组成,所有的元组被包含在一对方括号中。列表被创建将后,可以执行添加、删除、修改操作。

列表中可包含任意的Python数据信息,如字符串、数字、列表、元组等。
技术图片

1.1 列表介绍

列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, …, 元素n]。

【例子】

>>> list = [ “a”, “b”, “c” ],定义字符列表。
>>> list = [ 1, 2, 3, 4 ],定义数字列表。
>>> list = [ [1,2,3,4], ["a","b","c"] ],定义列表的列表。
>>> list = [ (1,2,3,4), ("a","b","c") ],定义元组列表。
>>> list((1,2))把一个元组转换成一个列表[1,2], list(test)可把
字符串转换成[t,e,s,t]列表

 

技术图片

1.2 列表操作

列表的所有操作如下表所示:
技术图片

1.2.1 列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
技术图片

1.2.2 列表切片

切片操作(slice)可以从一个列表中获取子列表(列表的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。
技术图片

格式:[start: end: step]
? [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
? [start:] 从start 提取到结尾
? [:end] 从开头提取到end - 1
? [start: end] 从start 提取到end - 1
? [start: end: step] 从start 提取到end - 1,每step 个字符提取一个
? 左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1

【例子】

>>> list = [1, 2, 3, 4, 5, 6, 7]
>>> list[1:] #列出索引1以后的---------[2, 3, 4, 5, 6, 7]
>>> list[:-1] #列出索引-1之前的-------[1, 2, 3, 4, 5, 6]
>>> list[1:3] #列出索引1到3之间的-----[2]
>>> list[::-1]#[7, 6, 5, 4, 3, 2, 1] #形成reverse函数的效果:

 

1.2.3 浅拷贝和深拷贝

  • 浅拷贝:浅拷贝意味着构造一个新的集合对象,然后用原始对象中找到的子对象的引用来填充它。从本质上讲,浅层的复制只有一层的深度。复制过程不会递归,因此不会创建子对象本身的副本。
  • 深拷贝:深拷贝使复制过程递归。这意味着首先构造一个新的集合对象,然后递归地用在原始对象中找到的子对象的副本填充它。以这种方式复制一个对象,遍历整个对象树,以创建原始对象及其所有子对象的完全独立的克隆。

A. 赋值引用

a = {1:[1,2,3]}
b = a
print(id(a) == id(b))

 

输出:

True

 

赋值引用,a 和 b 都指向同一个对象。
技术图片
B. 浅拷贝

a = {1:[1,2,3]}
b = a.copy()
print(id(a) == id(b))
print(id(a[1]) == id(b[1]))

 

输出:

False
True

 

a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
技术图片

C. 深度拷贝

import copy
a = {1:[1,2,3]}
b = copy.deepcopy(a)
print(id(a) == id(b))
print(id(a[1]) == id(b[1]))
print(id(a[1][0]) == id(b[1][0]))

 

输出:

False
False
True

 

a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。对于a[1][0]和b[1][0]还是对于对象1的引用,并没有重新新建一个对象,这符合python的存储机制。

技术图片
技术图片

>>> list1 = [3, 5, 1, 6, 9]
>>> lsit2 = [3, 5, 1, 6, 9]
>>> a = list1.sort()   #永久性排序,就是这个列表就变了
>>> print(a, l1) 
# None [1, 3, 5, 6, 9]
    
>>> b =sorted(list1)    #临时性排序,就是可以赋值某个变量
>>> print(b, list1)
# [1, 3, 5, 6, 9] [3, 5, 1, 6, 9]

>>> c = list2.reverse()
>>> print(c, list2)
# None [9, 6, 1, 5, 3]

 

------ list中的append和extend的区别:

  • list.append(object) 向列表中添加一个对象object
  • list.extend(sequence) 把一个序列seq的内容添加到列表中

听说Python列表很难学,一个思维导图就够了

标签:默认   位置   固定   chm   term   腾讯云   引用   拷贝   ted   

原文地址:https://www.cnblogs.com/aa1273935919/p/14120366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!