Python基本数据类型之list列表
列表是python中用的非常频繁的数据结构,它是有序序列。之前学的字符串就是一种有序序列。不过列表是可变的。
创建列表
li = list( ) #构造方法创建一个空列表
li = list( iterable_Object ) #以其它可迭代对象为参数初始化一个列表
li = [] #快捷方法创建一个空列表
li= [ i for i in range(1,11)] #推导式创建 非常的pythonic :)
if __name__ == "__main__": li0 = [] print(len(li0)) # 0 li1 = list(") print("li1 is ",li1) # li1 is ['1', '2', '3', '4', '5'] li2 = list(('init','by','tuple')) print("li2 is ",li2) # i2 is ['init', 'by', 'tuple'] li3 = [i for i in range(1,11) if i%2==0] print("li3 is ",li3) # li3 is [2, 4, 6, 8, 10] li4 = [(i,j) "] print("li4 is ",li4) #li4 is [('a', '1'), ('a', '2'), ('a', '3'), ('b', '1'), ('b', '2'), ('b', '3'), ('c', '1'), ('c', '2'), ('c', '3')]
1、可变的引用类型
可变是值列表对象本身可变。 支持追加,扩展,插入,删除,排序,反转等操作。
2、有序序列
列表是有序的,支持索引读写元素。当然也支持slice,详见我的另一篇随笔
3、元素类型任意
列表中的元素可以是任意类型,包括list类型,而且不同类型可以混合存在。
4、运算符
+
*
in
if __name__ == "__main__": li = [1]+[2,3,4,5] #[1, 2, 3, 4, 5] print(li) li+=[6,7,8] print(li) #[1, 2, 3, 4, 5, 6, 7, 8] li = [1]*3 print(li) #[1, 1, 1] print(1 in li) #True
5、内存模型
列表本身是不包含元素的数据的,而只是包含元素的引用。通过引用,再去访问元素实际指向的对象。
if __name__ == "__main__": a = 100 str = " li=[a,str]
再来通过一个深浅拷贝的例子深入说明
if __name__ == "__main__": li = [[1,2],3] li_copy = li.copy(); li_copy[0].pop() print(li) #[[1], 3] 发现副本的变化使源本也改变了 print( id(li[0]) , id(li_copy[0]) ) #1037590501832 1037590501832,一样的地址
第一张图中我们说列表中保存的只是元素的引用而已,这个引用,换个说法就是指针。通过copy方法拷贝的是列表中的元素,也就是引用,同样也是地址。
上图中 li[0] 本身的值是 1037590501832 通过copy方法后,li_copy[0]也获得了li[0]本身的值,所以他也指向列表中的那个嵌套的小列表。
so,通过li_copy来改变那个嵌套的小列表,会反映到li中。
如果需要避免这个情况,我们可以使用深拷贝。
#/usr/bin/env python3 # coding:utf-8 import copy if __name__ == "__main__": li = [[1,2],3] li_copy = copy.deepcopy(li) li_copy[0].pop() print(li) #[[1, 2], 3] 发现副本的变没有让源本改变 print( id(li[0]) , id(li_copy[0]) ) #1046997603464 1046997603528 地址不一样
6、常用API
li.append("1") #追加字符串"1"
li.extend([1,2,3]) #扩张列表,追加多个 ,等效于li +=[1,2,3]
li.insert(3,"hello") #插入
li.pop() #弹出最后一个元素
li.pop(1) #删除索引为1的 元素
li.remove(val) #根据值删除
li.index(val) #返回val元素的索引 没找到 则报错
li.sort() #排序,要求元素之间能比较。原地排序
sorted(li) #返回排序拷贝份,非原地排序
Python基本数据类型之list列表的更多相关文章
- Python基础数据类型(三)list 列表
3.4列表list [] 列表的格式 lst_l = [1,'123',[1,'www',2],'包青天'] 列表也有索引 print(lst_l[0]) print([-1][0:2]) #包青 切 ...
- Python基本数据类型之字符串、数字、布尔
一.数据类型种类 Python中基本数据类型主要有以下几类: Number(数字) String(字符串) Bool (布尔) List(列表) Tuple(元组) Sets(集合) Diction ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- Python特色数据类型(列表)(上)
Python从零开始系列连载(9)——Python特色数据类型(列表)(上) 原创 2017-10-07 王大伟 Python爱好者社区 列表 列表,可以是这样的: 分享了一波我的网易云音乐列表 今天 ...
- python基本数据类型之列表和元组
python基本数据类型之列表与元组 python中list与tuple都是可以遍历类型.不同的是,list是可以修改的,而元组属于不可变类型,不能修改. 列表和元组中的元素可以是任意类型,并且同一个 ...
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- python 基础数据类型 之 列表
列表:定义 和特性 列表定义和创建: 定义:[,]内以逗号分隔,按照索引,存放各种数据类型,一般没有限制,每个位置代表一个元素 range_create = list(range(0, 10))pri ...
- Python基本数据类型--列表、元组、字典、集合
一.Python基本数据类型--列表(List) 1.定义:[ ]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素. 2.列表的创建: # 方式一 list1 = ['name','ag ...
随机推荐
- CodeForces 300C --数论
A - A Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- ZOJ2332 Gems(最大流)
题目大概说,alsomagic有宝石,宝石有颜色和形状两个属性:他有一种法力可以将某些颜色形状的宝石转化成另一种颜色形状的宝石:他的女朋友对各个颜色都有一定的容忍数量,而他自己也对各个形状都有一定的容 ...
- Piggy-Bank[HDU1114]
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- C#线程间同步无法关闭
用C#做了个线程间同步的小程序,但每次关闭窗口后进程仍然在,是什么原因? 解决方法: 要加一句 线程.IsBackground = true; 否则退出的只是窗体 上面的方法没看懂... MSDN上说 ...
- HDU 1312 (BFS搜索模板题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:问迷宫中有多少个点被访问. 解题思路: DFS肯定能水过去的.这里就拍了一下BFS. ...
- [leetCode][003] Intersection of Two Linked Lists
[题目]: Write a program to find the node at which the intersection of two singly linked lists begins. ...
- 【BZOJ】3053: The Closest M Points(kdtree)
http://www.lydsy.com/JudgeOnline/problem.php?id=3053 本来是1a的QAQ.... 没看到有多组数据啊.....斯巴达!!!!!!!!!!!!!!!! ...
- myeclipse 8.5最新注册码
myeclipse 8.5最新注册码(过期时间到2016年) Subscriber:huazai Subscription Code:uLR8ZC-855550-6156585630 ...
- Maya 学习资料
罗其胜3d角色强化 CGwhat-Maya变形金刚擎天柱建模教程 Pixar in the box - khan academy Siggraph历届优秀动画 CG软件发展史:MAYA动画十年历程 m ...
- sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"问题解决
安装一个软件时,遇到这个问题sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 上网 ...