1.9 list 列表
列表是什么?
list是Python中的基本数据结构之一,属于可变序列,所以前文中讲的可变序列的通用操作都适用于list。
这一节讲列表的特性吧。
特性一:
列表是包含任意对象的有序集合,同一个列表中可以放不同的对象。
>>> #生成一个列表,里边多放几种对象
... l = [3,'你好',(7,8,9),[4,5],lambda x:x*x,{4:'s'}]
>>> l
[3, '你好', (7, 8, 9), [4, 5], <function <lambda> at 0x00000228B989D268>, {4: 's'}]
>>>
#目前l列表中已经存在多种数据类型,还可以向其中加入别的数据类型的数据,如向列表末尾加入range(3)
>>> l.append(range(3))
>>> l
[3, '你好', (7, 8, 9), [4, 5], <function <lambda> at 0x00000228B989D268>, {4: 's'}, range(0, 3)]
>>>
# l中能能放的数据类型还有其他种类
特性二:
可以通过位置偏移,下标索引的方式方位列表中的元素。下标是从0开始的,倒过来是从-1开始的,这也是索引访问的一个特性。也可以访问某一范围之内的数值(切片)。
>>> #通过下标索引方式访问列表中的元素
>>> l = list(range(5))
>>> l[2]
2
>>>
>>> #通过下标倒着取元素
>>> l[-1]
4
>>> l
[0, 1, 2, 3, 4]
>>> #可见,列表的索引倒着是从-1开始的,这点要注意
>>>
>>> #用切片的方式访问列表中的元素
>>> l[2,4]
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
l[2,4]
TypeError: list indices must be integers or slices, not tuple
>>> l[2:3]
[2]
>>> l[1:4]
[1, 2, 3]
>>> l[-1:-3] #这个例子就说明了即使是倒着取元素,切片的范围也是左小右大
[]
>>> l[-3:-1]
[2, 3]
>>>
特性三:
列表可变长度,异质并且可互相嵌套。
>>> #列表的可变长度表现在可以改变列表元素的数据量,具体实现方法包括append()、insert()、remove()、extend()、pop()、* 等 这几个函数的用法在前文中已经介绍,不再赘述
>>> #说说列表异质这个特性吧,说的就是列表中的数据类型可以是可以是任意的数据类型
>>> #互相嵌套说的是啥呢,简单来说列表的元素可以是一个列表,举个栗子
>>> l = list(1,[2,4])
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
l = list(1,[2,4])
TypeError: list() takes at most 1 argument (2 given)
>>>
>>> l=[1,2,[3,4,5]]
>>> l[2]
[3, 4, 5]
>>> #列表中的列表中的元素该怎么访问呢?
>>> #第一步:通过l[2]取到了[3,4,5] 没毛病吧
>>> #第二步:给你一个[3,4,5],如何取元素呢?还用索引呗用
>>> #把两步结合到一起 ,看看怎么取到元素4
>>> l[2][1]
4
>>> #用这个方法可以嵌套很多很多层,只有有必要
特性四:
列表属于可变序列,列表元素可原位改变。
特性五:
5 列表的存储机制叫对象引用数组,跟之前讲过的变量的存储方式有关。
事先声明,这个截图是我截取的别人的,非原创。为了更好的说明,不惜盗图了。
为什么列表是异质的呢?就是由下图的这套机制决定的,个人理解,列表中存储的是实际内存对象的引用。
也就是列表中存储引用,具体这引用指向什么类型的对象就没有限制了,所以带给大家最直观的感受就是列表中可以存放任意类型的对象。

列表特殊操作一:
排序 sort()
>>> #先来一个列表,然后把顺序打乱,然后再排序 >>> import random >>> l = list(range(5)) >>> random.sh Traceback (most recent call last): File "<pyshell#43>", line 1, in <module> random.sh AttributeError: module 'random' has no attribute 'sh' >>> >>> random.shuffle(l) >>> l [3, 4, 0, 2, 1] >>> l.sort() >>> l [0, 1, 2, 3, 4] >>> #可见,sort()默认是按照从左到右的升序排序的 >>> #如果我想把排序的结果按照从左到右的降序排序有两种实现方法 >>> >>> l.reverse() >>> ls Traceback (most recent call last): File "<pyshell#53>", line 1, in <module> ls NameError: name 'ls' is not defined >>> l [4, 3, 2, 1, 0] >>> #就是sort()、reverse()两个函数结合着用 >>> >>> >>> random.shuffle(l) >>> l [1, 4, 3, 2, 0] >>> l.sort(reverse=True) >>> l [4, 3, 2, 1, 0] >>> #一步到位,排序加反转 >>> >>> #想必刚才写sort(reverse=True)是已经到sort()的另外一个参数了,这个参数的作用是什么呢? >>> #如果列表中存储的是元素的序列类型数据,想根据序列中的特定位置的元素进行排序 >>> l = ['Mark','Tony','ndusigdn','vjisodfhgs'] >>> #如果我想将根据l中的所有元素的第二位进行排序并反转 >>> l.sort(key=lambda x:x[1],reverse=Ture) Traceback (most recent call last): File "<pyshell#68>", line 1, in <module> l.sort(key=lambda x:x[1],reverse=Ture) NameError: name 'Ture' is not defined >>> l.sort(key=lambda x:x[1],reverse=True) >>> l ['Tony', 'vjisodfhgs', 'ndusigdn', 'Mark'] >>> >>> #如果列表中的元素是列表, >>> l.sort(key=lambda x:x[1],reverse=True) Traceback (most recent call last): File "<pyshell#74>", line 1, in <module> l.sort(key=lambda x:x[1],reverse=True) File "<pyshell#74>", line 1, in <lambda> l.sort(key=lambda x:x[1],reverse=True) IndexError: list index out of range >>> l [[32464], [65472], [5468], [93525657], [87544346]] >>> l.sort(key=lambda x:x[1]) Traceback (most recent call last): File "<pyshell#76>", line 1, in <module> l.sort(key=lambda x:x[1]) File "<pyshell#76>", line 1, in <lambda> l.sort(key=lambda x:x[1]) IndexError: list index out of range >>> >>> l = [[1,2,3,4,7],[43,657,43,256],[657,3,576,2454,67]] >>> l.sort(key=lambda x:x[1],reverse=True) >>> l [[43, 657, 43, 256], [657, 3, 576, 2454, 67], [1, 2, 3, 4, 7]] >>>
>>> l = ['Mark','Tony','ndusigdn','vjisodfhgs'] >>> l ['Mark', 'Tony', 'ndusigdn', 'vjisodfhgs'] >>> sorted(l,key=lambda x:x[1],reverse=True) #全局函数sorted()直接就将排序结果返回了 ['Tony', 'vjisodfhgs', 'ndusigdn', 'Mark'] >>> l ['Mark', 'Tony', 'ndusigdn', 'vjisodfhgs'] #原序列中的元素值并没有改变 >>>
>>> l.sort(key=lambda x:x[1],reverse=True) #列表的sort()函数返回的数据类型为None >>> l ['Tony', 'vjisodfhgs', 'ndusigdn', 'Mark'] #原列表中值的元素顺序发生变化 >>>
1.9 list 列表的更多相关文章
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
前言: Aries框架毕竟是开发框架,所以重点还是要写代码的,这样开发人员才不会失业,哈. 步骤1:新建html 建一个Html,主要有三步: 1:引入Aries.Loader.js 2:弄一个tab ...
- ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面
前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...
- 散列表(hash table)——算法导论(13)
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...
- Python列表去重
标题有语病,其实是这样的: 假设有两个列表 : L1 = [1,2,3,4] ; L2 = [1,2,5,6] 然后去掉L1中包含的L2的元素 直接这样当然是不行的: def removeExists ...
- WPF 微信 MVVM 【续】修复部分用户无法获取列表
看过我WPF 微信 MVVM这篇文章的朋友,应该知道我里面提到了我有一个小号是无法获取列表的,始终也没找到原因. 前两天经过GitHub上h4dex大神的指导,知道了原因,是因为微信在登录以后,web ...
- Emoji选项列表
一.需要的前提文件 从网上下载Emoji的表情包,当然是png的图片,因为WPF不支持彩色的Emoji,所以,做列表的时候,需要用图片. 随着压缩包一起的还有一个Emoji.xml文件,文件的层级结构 ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能
在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...
随机推荐
- (1-1)SpringCloud-Eureka:服务的注册与发现
SpringCloud Eureka是SpringCloud Netflix服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能.下面来做一个示例 ...
- 移动端 -webkit-user-select:text; ios10 bug 解决方案
移动端一般body的css.会设置 作用就不解释了: body{ height:100%;min-height:100%; font-family: "微软雅黑",'Helveti ...
- DirectX SDK (June 2010)安装错误S1023的一个解决方法
在安装DXSDK_Jun10.exe时一个常见的安装失败的代号是S1023,一般出现这种错误的原因是系统中已经安装了Visual Studio 2010及以上的版本. 在[控制面板]中找到这两个: 如 ...
- struts2 action 页面与action参数的传递的三种方式
第一种: 初始页面: <form action="LoginAction.action" method="post"> 用户名:<input ...
- 重拾Python(2):如何安装第三方库(Windows)
使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...
- 验证插件——jquery.validate.js
下载地址:http://download.csdn.net/download/s592652578/9457421 教程:http://www.runoob.com/jquery/jquery-plu ...
- gulp最简示例
全局安装 $ npm gulp -g 作为项目的开发依赖安装 $ npm gulp --save-dev 脚本文件 在根目录创建gulpfile.js文件 const gulp = require(' ...
- python编码的那些事
字符串编码在python里是经常会遇到的问题,特别是写文件或是网络传输调用某些函数的时候. 现在来看看python中的unicode编码和utf-8编码 字符串编码的历史 计算机只能处理数字,文本转换 ...
- Trusted Execution Technology (TXT) --- 度量(Measurement)篇
版权声明:本文为博主原创文章,未经博主允许不得转载.http://www.cnblogs.com/tsec/p/8413537.html 0. 导读 TXT基本原理篇介绍了TXT安全度量的基本概念,包 ...
- Apache 配置SSI速记
1. 启用模块 httpd.conf LoadModule filter_module modules/mod_filter.so 2. <Directory 的Options配置中增加Incl ...