一、序列

python包含6种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。序列中每个元素被分配一个序号即索引,第一个索引为0,第二个为1,以此类推。也可以反向计数,最后一个元素标记为-1,倒数第二个标记为-2,以此类推。序列可以包含其他序列。

列表和元组的区别在于,列表可以修改,而元组不可以修改。

二、通用序列操作

序列的通用操作包括索引、分片、加、乘、检查成员资格(某元素是否属于序列的成员)等,此外还有计算序列长度、求序列最大元素最小元素等内建函数。

1、索引

序列第一个位置索引为0,倒序访问第一个元素索引为-1,如:

>>>'Hello'[0]
'H'
>>>'Hello'[-1]
'o'

2、分片

分片操作用于访问序列中的一部分范围的元素,分片操作需要提供两个索引值作为边界(步长可选),第一个索引的元素包含在分片中,第二个索引的元素则不在分片里。如果第一个索引为空,则默认从第一个元素开始;如果第二个索引为空,则默认包括后面的所有元素,如:

>>>num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>num[3 : 6]
[4, 5, 6]
>>>num[ : 2]
[1, 2]
>>>num[-3 : -1]
[8, 9]
>>>num[-3 : ]
[8, 9, 10]
>>>num[ : ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>num[0 : 10 : 2]
[1, 3, 5, 7, 9]
>>>num[8 : 3 : -1]
[9, 8, 7, 6, 5]

3、序列加、序列乘

通过加法运算符可以进行序列连接操作,乘法运算可以生成原序列重复多次的新序列。加法运算符只能连接同类型的序列,否则会抛出TypeError错误。乘法运算只能使用序列乘以一个正整数。None用于空列表的初始化。

>>>[1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>>'Hello' + "C"
'HelloC'
>>>'Hello' * 3
'HelloHelloHello'
>>>[5] * 5
[5, 5, 5, 5, 5]

4、成员资格检查

检查一个值是否在序列中,可以使用in运算符,返回布尔值,如果该值在序列中则返回True,反之返回False。

5、长度、最大值和最小值

len函数返回序列中包含的元素数目,max和min函数分别返回序列中的最大值和最小值。

>>>num = [100, 34, 678]
>>>len(num)
3
>>>max(num)
678
>>>min(num)
34
>>>max(15, 28, 90, 7, 666)
666

三、列表

1、列表操作

list函数强制将其他类型转换为列表,如:

>>>list('Hello')
['H', 'e', 'l', 'l', 'o']

''.join(somelist)将字符组成的列表转换为字符串。

可以利用索引访问列表元素并更改元素值,不能为一个位置不存在的元素赋值。

删除元素通过del语句实现,del也可以用于删除字典元素、变量等。

分片赋值可以将原序列替换为序列不等长的新序列,也可以实现插入新元素、删除现有元素。如:

>>>name = list('Perl')
>>>name[1 : ] = list('ython')
>>>name
['P', 'y', 't', 'h', 'o', 'n']
#分片实现插入元素
>>>num = [1, 5]
>>>num[1 : 1] = [2, 3, 4]
>>>num
[1, 2, 3, 4, 5]
#分片实现删除元素
>>>num[1 : 4] = []
>>>num
[1, 5]

2、列表方法

方法的调用格式:object.method(param)

append:在列表末尾追加新的对象

count:统计某个元素在列表中出现的次数

extend:在列表的末尾一次性追加另一个序列中的多个值

index:从列表中找出某个值第一个匹配项的索引位置,如果未找到则抛出ValueError错误

insert:将对象插入列表中,参数为插入位置和对象值

pop:移除列表中的一个元素(默认为最后一个),并返回该元素的值

remove:移除列表中某个值的第一个匹配项,如果未找到则抛出ValueError错误

reverse:将列表中的元素反向存放

sort:在原位置对列表进行排序(默认从小到大)

>>>lst = [1, 2, 3]
>>>lst.append(4)
>>>lst
[1, 2, 3, 4]
>>>x = [[1, 2], 1, 1, [2, 1, [1, 2]]]
>>>x.count(1)
2
>>>a = [1, 2, 3]
>>>b = [4, 5, 6]
>>>a.extend(b)
>>>a
[1, 2, 3, 4, 5, 6]
>>>['we', 'are', 'the', 'knights', 'who', 'say', 'ni'].index('who')
4
>>>num = [1, 2, 3, 5, 6, 7]
>>>num.insert(3, 'four')
>>>num
[1, 2, 3, 'four', 5, 6, 7]
>>>x = [1, 2]
>>>x.pop(0)
1
>>>x
[2]
>>>x = ['to', 'be', 'or', 'not', 'to', 'be'].remove('be')
>>>x
['to', 'or', 'not', 'to', 'be']
>>>x.reverse()
['be', 'to', 'not', 'or', 'to']
>>>x = [4, 6, 2, 1, 7, 9]
>>>x.sort()
>>>x
[1, 2, 4, 6, 7, 9]

sort方法原地修改列表而返回的值为空值,如果需要一个排好序的副本而保留原列表顺序不变,下面的方法不可行:

>>>x = [4, 6, 2, 1, 7, 9]
>>>y = x.sort()
#sort方法返回值为空值
>>>print y
None

正确的做法是:

#y为排好序的副本,而原列表顺序不变
>>>x = [4, 6, 2, 1, 7, 9]
>>>y = x[ : ]
>>>y.sort()

注意,简单地把x赋值给y是没用的,这样做是把x、y都指向同一个列表,并没有实现复制。

还可以使用sorted函数:

>>>x = [4, 6, 2, 1, 7, 9]
>>>y = sorted(x)

3、高级排序

如果希望元素可以按照特定方式排序,则可以自定义compare函数作为sort方法的参数,可选的关键字参数还有key和reverse,用法如下:

>>>num = [5, 2, 9, 7]
>>>num.sort(cmp)
>>>num
[2, 5, 7, 9]
>>>x = ['aaaaaaaa', 'aaaaaaa', 'acme', 'add', 'aerate']
>>>x.sort(key = len)
>>>x
['add', 'acme', 'aerate', 'aaaaaaa', 'aaaaaaaa']
>>>x = [4, 6, 2, 1, 7, 9]
#reverse是简单的布尔值,为真表示进行反向排序,默认为假
>>>x.sort(reverse = True)
>>>x
[9, 7, 6, 4, 2, 1]

四、元组

元组不可修改,使用逗号分隔了一些值就自动创建了元组,空元组的创建需要用没包含内容的圆括号括起来。一个值的元组必须在值后面加逗号:

>>>1, 2, 3
(1, 2, 3)
>>>()
()
>>>42
42
>>>42,
(42,)
>>>3 * (40 + 2)
126
>>>3 * (40 + 2,)
(42, 42, 42)

tuple函数将一个序列转换为元组。

元组存在的意义:

(1)在映射(和集合的成员中)当做键来使用,因为键不可更改;

(2)元组作为很多内建函数和方法的返回值存在。

Python入门笔记——(2)列表和元组的更多相关文章

  1. python学习笔记之列表与元组

    一.概述 python包含6种内建的序列,其中列表和元组是最常用的两种类型.列表和元组的主要区别在于,列表可以修改,元组则不能修改 使用上,如果要根据要求来添加元素,应当使用列表:而由于要求序列不可修 ...

  2. Python学习笔记_week2_列表、元组、字典、字符串、文件、i编码

    一. 列表.元组 names=["A","B","C","D"] print(names) print(names[0] ...

  3. python学习笔记(2)--列表、元组、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表和元组的操作 列表是我们以后最长用的数据类型之一,通过列表可以最方便的对数据实现最方便的存储.修改等操作 定 ...

  4. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  5. Python入门笔记(13):列表解析

    一.列表解析 列表解析来自函数式编程语言(haskell),语法如下: [expr for iter_var in iterable] [expr for iter_var in iterable i ...

  6. Python入门笔记(8):列表

    一.序列类型操作符 1.切片[]和[:] 2.成员关系操作符(in ,not in ) 1: s1 = [1,2,3,4,5,6,7] 2: s2 = [2,3,6] 3: s3 = [] 4: fo ...

  7. Python学习笔记只列表和元组

    一.成员资格 1.检查某个字符是否在某个字符串中:'a' in 'absent' 2.获取数组的长度.最大.最小值: numbers=[100,54,345] len(numbers) //长度 ma ...

  8. python基本数据类型之列表和元组

    python基本数据类型之列表与元组 python中list与tuple都是可以遍历类型.不同的是,list是可以修改的,而元组属于不可变类型,不能修改. 列表和元组中的元素可以是任意类型,并且同一个 ...

  9. Python【2】-列表和元组

    一.序列 python包含六种内建的序列:列表.元组.字符串.unicode字符串.buffer对象.xrange对象. 列表可以修改,元组是不能修改的. 二.列表 列表list是变长序列,其中的内容 ...

随机推荐

  1. Position Independent Code (PIC) in shared libraries

    E原文地址:http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/下一文: ...

  2. 编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝

    建议14: 正确实现浅拷贝和深拷贝 为对象创建副本的技术称为拷贝(也叫克隆).我们将拷贝分为浅拷贝和深拷贝. 浅拷贝 将对象中的所有字段复制到新的对象(副本)中.其中,值类型字段的值被复制到副本中后, ...

  3. Ubuntu 16.04 安装jdk

    Ubuntu 16.04 安装jdk 准备工作 安装版本:jdk-8u91-linux-x64.tar.gz 官方下载 创建目录作为JDK的安装目录,这里选择安装位置为:/usr/java/ sudo ...

  4. 不同数据库表结构的转化,PowerDesigner的使用教程

    通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库 ...

  5. ubuntu 安装 删除 卸载 Deb 包文件

    图形界面: 安装deb 直接双击图标,输入密码后就可自动安装. 卸载deb 1. 菜单-系统->系统管理->新立得软件包管理器 或 Alt+F2(运行窗口)输入 sudo synaptic ...

  6. 修改Tomcat主目录

    在默认安装后,tomcat的主目录是webapps/root目录,如果我们想改变tomcat的主目录的话可以这样做: 1 %TOMCAT_HOME%/webapps/下直接创建,这种方法有一个缺点,就 ...

  7. iOS APP打包上传到APPstore的最新步骤

    一.前言: 作为一名iOS开发者,把辛辛苦苦开发出来的App上传到App Store是件必要的事.但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤. 二.准备: ...

  8. npm更换为镜像

    背景:npm在安装的过程中需用从国外的网站获取代码,速度非常慢,因此更换为淘宝镜像,提升速度. 1.永久起作用: npm config set registry https://registry.ta ...

  9. ASP.NET -- 获取浏览器信息

    1. 获取浏览器信息 private void GetBrowserInfo() { StringBuilder sb = new StringBuilder(); sb.AppendLine(str ...

  10. luoguP2387 [NOI2014]魔法森林

    https://www.luogu.org/problemnew/show/P2387 考虑先将所有边按 a 值排序,依次加入每一条边,如果这条边的两个端点 ( l, r ) 之间的简单路径中 b 的 ...