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 ...
随机推荐
- html整理(2)
使用mailto在网页中链接Email地址 <a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情 ...
- ZOJ1516 Uncle Tom's Inherited Land(二分图最大匹配)
一个经典的构图:对格子进行黑白染色,黑白的点分别作XY部的点. 这一题的边就是可以出售的单位面积2的土地,边的端点就是这个土地占用的X部和Y部的两个点. 这样就建好二分图,要求最多土地的答案显然是这个 ...
- BZOJ1100 : [POI2007]对称轴osi
将多边形转化为如下的环: 1到2的边,角2,2到3的边,角3,...,n-1到n的边,角n,n到1的边,角1 然后枚举对称轴,如果i是对称轴,那么[i-n,i+n]是一个回文串 用Manacher算法 ...
- 移动WEB测试工具 Adobe Edge Inspect
要用到的内容: Adobe Edge Code CC https://creative.adobe.com/products/code?promoid=KFKML Adobe Edge In ...
- 【wikioi】1034 家园(最大流+特殊的技巧)
http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...
- HDU 4604 Deque(最长上升子序)
题目链接 本来就对N*log(N)算法不大会....然后各种跪了,求出最长不下降+最长不上升-最少相同元素.求相同元素,用二分求上界搞的.代码里4个二分.... #include <cstdio ...
- CSS对浏览器的兼容性(IE和Firefox)技巧整理
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下.对于web2.0的过度,请尽量用xhtml格 ...
- 给iOS工程增加Daily Build
给iOS工程增加Daily Build 前言 Daily Build 是一件非常有意义的事情,也是敏捷开发中关于 "持续集成" 的一个实践.Daily Build 对于开发来说有 ...
- 【C语言】17-预处理指令3-文件包含
这讲介绍最后一个预处理指令---文件包含 一.基本概念 其实我们早就有接触文件包含这个指令了, 就是#include,它可以将一个文件的全部内容拷贝另一个文件中. 二.一般形式 1.第1种形式#inc ...
- python基础数据类型
整形:(不可变类型) >>> a = 123>>> type(a)<class 'int'> 长整形:(在python3中已经废弃了) >> ...