文档章节

Python类型和运算(二)【列表】

S
 Star0_0Sky
发布于 2017/01/20 16:22
字数 1225
阅读 69
收藏 0

列表

Python的列表对象是这个语言提供的最通用的序列,他没有大小,类型的限制,可以随意修改其内容。

序列操作

由于列表是序列的一种,所以对字符串的序列操作这里都适用,但是不同的就是结果有可能是列表,列表有点像其他语言的数组,只是他可以有不同类型的存在。

>>> line=[123,'abc']
>>> line
[123, 'abc']

列表还支持像多维数组一样的嵌套。

>>> line=[line,line,line]
>>> line
[[123, 'abc'], [123, 'abc'], [123, 'abc']]
>>> line=[1,[2,'abcd'],[3,'efgh']]
>>> line[2]
[3, 'efgh']

列表的元素个数:

>>> len(line)
3

它将列表中的每个列表看做一个整体,所以说结果是3.

对列表的索引和切片:

>>> line=[[1,'a'],[2,'b'],[3,'c']]
>>> line
[[1, 'a'], [2, 'b'], [3, 'c']]
>>> line[1]
[2, 'b']
>>> line[1:3]
[[2, 'b'], [3, 'c']]
>>> line[::-1]
[[3, 'c'], [2, 'b'], [1, 'a']]

对字符串的索引与切片相同,但是列表的中可以存放列表,这就决定了,他有不一样的地方,他可以进行索引和切片/索引混搭,但前面一定要是索引,只有确定了一个元素才能进行后面的确定。

>>> line=[1,[2,'abcd'],[3,'efgh']]
>>> line[1][0]
2
>>> line[1][::-1]
['abcd', 2]

类型特定的操作

类表能按需要来增大和减小列表,来响应其特定的操作。

>>> line=[132,'abc']
>>> line.append('1.23')
>>> line
[132, 'abc', '1.23']
>>> line.pop(1)
'abc'
>>> line
[132, '1.23']

列表的append方法扩充了列表的方法,并在尾部插入一项;pop的方法移除给定偏移的一项,删除选定的那项,从而使列表减小。其他的列表方法可以在任意位置插入(insert)元素,按照值移除(remove)元素等。。。因为列表的大小是可变的,所以它的改变没有生成新的列表,而是在原来列表进行修改的,这和字符串不一样,字符串的修改时产生新的字符,并且变量指向新的字符串,Python的垃圾回收机制将原有字符串回收掉。

>>> l=['bb','aa','cc']
>>> l.sort()
>>> l
['aa', 'bb', 'cc']
>>> l.reverse()
>>> l
['cc', 'bb', 'aa']

sort方法是对列表升序排列,reverse方法是对列表翻转,他们都是对源字符串进行修改。

小结:

    什么样是对源序列进行操作呢?

    就是看是否需要变量进行接收,也就是前面是否需要一个变量和等号。

边界检查

列表没有固定大小,但是Python还是不允许引用不存在的元素。这是有意为之的,由于去给列表边界外的赋值,往往会非常饿、危险(c语言更是如此,更糟糕的是c语言还没有检查机制),Python并不会增大他的大小,而去响应你错误的操作。所以他会返回给你个错误。(但是字符串的切片是可以的,但是索引是不可以的)

嵌套

Python核心数据类型的一个优秀的特性就是他们支持任意的嵌套。能够以任意的组合对其进行嵌套,多深层次的嵌套都是可以的(例如,让一个列表包含一个字典,并让这个字典包含另一个列表)。这种特性的一个应用就是实现矩阵。

>>> m=[[1,2,3],
	[4,5,6],
	[7,8,9]]
>>> m
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> m[1]
[4, 5, 6]
>>> m[1][2]
6

列表的解析

Python中不光有处理序列操作和列表的方法,还有一个更高级的操作,称作列表解析表达式,从而提供了一种处理像矩阵这样结构强大的工具。假如我们需要从列表的矩阵中提取出第二列。因为矩阵是按照行存储的,索引可以通过简单的索引进行获得行,使用列表解析可以同样简单的获得列。

>>> m
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> cl=[row[1]for row in m]
>>> cl
[2, 5, 8]

列表解析源自集合的概念。他是一种通过在一个序列中运行一个表达式而创建的一个新列表。每次一个,从左到右。列表解析是编写在方括号中的(提醒你在创建列表这个事实),并且有表达式和循环结构都使用了一个变量米名(这里是row)。之前的这个列表解析表达式基本上就是他字面上说讲的:“把在矩阵m中的每个row中的row[1],放在一个新列表中”。其结果就是一个包含原矩阵第二列的新矩阵。

其实还有很多例子,但是这些都是用循环或判断去限定实现的,也就是说,读取时候是可以为表达式的。

© 著作权归作者所有

S
粉丝 1
博文 9
码字总数 4982
作品 0
大连
私信 提问
7.python数据分析与展示------Pandas库入门

1.Pandas库的介绍 Pandas是Python第三方库,提供高性能易用数据类型和分析工具 import pandas as pd Pandas基于Numpy实现,常与Numpy和Matplotlib一同使用 import pandas as pd d =pd.Series...

bxg1065283526
2018/04/29
0
0
python核心编程-第四章-个人笔记

1.所有的python对象都拥有三个特性: ①身份:每个对象都有唯一的身份标识自己,可用内建函数id()来得到。基本不会用到,不用太关心 >>> a = 2>>> id(2)39411616L>>> id(a)39411616L 这个例子...

好好先生_1028
2015/11/18
47
0
python超详细的基础笔记你学会了么

python简介 python是一种面向对象的解释型计算机程序设计语言,python的是吉多·范罗苏姆(Guido van Rossum)于1989年发明 任何语言都有优缺点,python也不例外,python的优点是简单易懂、可...

糖宝lsh
2018/08/15
29
0
python基础:1. 基础、数据类型

教程:http://www.runoob.com/python/python-tutorial.html pypi网站有许多第三方模块 安装python: 安装anaconda即可 注释: # 缩进: python每行都要顶格写,不要缩进。 python结束也不用分...

ant_yi
2018/11/13
0
0
Python 机器学习基础(二)——Numpy 篇

本文是 Python 机器学习基础系列文章的第二篇——Numpy 篇。 Numpy Numpy 是 Python 的一种开源数值计算扩展包,它可以用于存储和处理大型矩阵,比 Python 自带的嵌套列表结构要高效得多。 ...

withchris
2018/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
21分钟前
5
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
21分钟前
5
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
21分钟前
6
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
25分钟前
7
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
25分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部