Python包含6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象

本篇主要讨论最常用的两种类型:列表、元组

本文地址:http://www.cnblogs.com/archimedes/p/python-list-tuple.html,转载请注明源地址。

列表和元组的主要区别在于,列表可以修改,元组则不能。一般情况下,在几乎所有的情况下列表都可以代替元组

例如:使用序列可以表示数据库中一个人的信息(姓名,年龄)

>>> edward=['Edward Gumby',42]

序列还可以包含其他序列

>>> edward=['Edward Gumby',42]
>>> john=['John Smith',50]
>>> database=[edward,john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]

通用序列操作

所有的序列操作都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘以及检查某个元素是否属于序列的成员

索引

序列中的所有元素都是有编号的--从0开始递增。这些元素可以通过编号分别访问,如下:

>>> greeting='hello'
>>> greeting[0]
'h'
>>> greeting[-1]
'o'
>>> 'hello'[1]
'e'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,例如:

>>> fourth=raw_input('Year:')[3]
Year:2005
>>> fourth
''
#根据给定的年月日以数字形式打印出日期
months=[
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
] #以1~31的数字作为结尾的列表
endings=['st','nd','rd']+17*['th']\
+['st','nd','rd']+7*['th']\
+['st']
year=raw_input('Year: ')
month=raw_input('Month(1-12): ')
day=raw_input('Day(1-31): ')
month_number=int(month)
day_number=int(day) #记得要将月份和天数减1,以获得正确的索引
month_name=months[month_number-1]
ordinal=day+endings[day_number-1] print month_name+' '+ordinal+', '+year

运行结果:

>>>
Year: 1974
Month(1-12): 8
Day(1-31): 16
August 16th, 1974

分片

使用分片操作来访问一定范围内的元素,分片通过冒号相隔的两个索引来实现:

>>> tag='<a herf="http://www.python.org">Python web site</a>'
>>> tag[9:30]
'http://www.python.org'
>>> tag[32:-4]
'Python web site'

第一个索引是需要提取部分的第一个元素的编号,而最后的索引则是分片之后剩下部分的第一个元素的编号

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

1、优雅的捷径

访问最后的三个元素,当然可以进行显示的操作

>>> numbers[7:10]
[8, 9, 10]
>>> numbers[-3:-1]
[8, 9]
>>> numbers[-3:0]
[]
>>> numbers[-3:]
[8, 9, 10]

只有最后一个分片完成任务,这种方法同样适用序列开始的元素:

>>> numbers[:3]
[1, 2, 3]

实际上,如果需要复制整个序列,可以将两个索引都置空:

>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2、更大的步长

分片还有第三个参数--步长,通常都是隐式设置的,在一般情况下,步长是1,不能为0,但是可以为负数,即从右往左提取元素

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

测试代码

序列相加

通过使用加号可以进行序列的连接操作:

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello.'+'world!'
'hello.world!'
>>> [1,2,3]+'world!' Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
[1,2,3]+'world!'
TypeError: can only concatenate list (not "str") to list

乘法

用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次

>>> 'python'*5
'pythonpythonpythonpythonpython'
>>> [42]*10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

成员资格

为了检查一个值是否在序列中,可以使用in运算符,该运算符返回布尔值

>>> permissions='rw'
>>> 'w'in permissions
True
>>> 'x'in permissions
False
Enter your name: mlh
True
>>> subject='$$$ Get rich now!!! $$$'
>>> '$$$'in subject
True

长度、最小值和最大值

内建函数len、min、max,len函数返回序列中所包含元素的数量,min和max函数分别返回序列中最大和最小的元素

>>> numbers=[100,34,678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
>>> max(2,3)
3
>>> min(9,3,2,5)
2

list函数

list函数可以根据字符串创建列表

>>> list('hello')
['h', 'e', 'l', 'l', 'o']

基本列表操作:

1、改变列表:元素赋值

使用索引标记来为某个特定的、位置明确的元素赋值:

>>> x=[1,1,1]
>>> x[1]=2
>>> x
[1, 2, 1]

2、删除元素

使用del语句来实现:

>>> names=['Alice','Beth','Ceil','Dee-Dee','Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

注意:Cecil是彻底删除,列表长度也从5变为4

3、分片赋值

>>> names
['p', 'e', 'r', 'l']
>>> names[2:]
['r', 'l']
>>> name=list('perl')
>>> name
['p', 'e', 'r', 'l']
>>> name[2:]=list('ar')
>>> name
['p', 'e', 'a', 'r']
>>> name[1:]=list('ython')
>>> name
['p', 'y', 't', 'h', 'o', 'n'] >>> numbers=[1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4]=[]
>>> numbers
[1, 5]

列表方法:

方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,方法的调用方式:对象.方法(参数)

1、append

append方法用于在列表末尾追加新的对象:

>>> lst=[1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

2、cout

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

>>> ['to','be','or','not','to','be'].count('to')
2
>>> x=[[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1

3、extend

extend方法可以在列表的末尾一次性的追加另一个序列中的多个值

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> #区别连接操作
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]

4、index

index方法用于从列表中找出某一个匹配项的索引位置:

>>> knights=['we','are','the','knigths','who','say','ni']
>>> knights.index('who')
4
>>> knights=['we','are','the','knigths','who','say','ni']
>>> knights.index('herring') Traceback (most recent call last):
File "<pyshell#184>", line 1, in <module>
knights.index('herring')
ValueError: 'herring' is not in list

没有成功找到会引发异常

 5、insert

insert方法用于将对象插入到列表中:

>>> numbers=[1,2,3,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
>>> #extend方法一样,insert方法的操作也可以用分片赋值来实现
>>> numbers=[1,2,3,5,6,7]
>>> numbers[3:3]=['four']
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]

6、pop

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

>>> x=[1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]

注意:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法

7、remove

remove方法用于移除列表中某个值的第一个匹配项:

>>> x=['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('bee') Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
x.remove('bee')
ValueError: list.remove(x): x not in list

8、reverse

reverse方法将列表中的元素反向存放,该方法也改变了列表但不返回值

>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

9、sort

sort方法用于在原位置对列表进行排序,改变原来的列表,从而让其中的元素按照一定的

>>> x=[4,6,2,1,7,9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

元组

元组与列表一样,也是一种序列,唯一不同的是元组不可以修改:

  • 任意对象的有序集合
  • 通过偏移存储
  • 属于不可变序列类型
  • 固定长度、异构、任意嵌套
  • 对象引用数组

使用逗号分隔了一些值,就自动创建了一个元组:

>>> 1,2,3
(1, 2, 3)
>>> ()
()
>>> 42
42
>>> 42,
(42,)
>>> (42,)
(42,)

元组也是(大部分时候是)通过圆括号括起来的,空元组可以用没有包含内容的两个圆括号来表示:

tuple函数

tuple函数的功能和list函数基本上是一样的:以一个序列作为参数并把它转换为元组。

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1, 2, 3)

列表与元组的相互转化:

>>> T=('cc','aa','dd','bb')
>>> tmp=list(T)
>>> tmp
['cc', 'aa', 'dd', 'bb']
>>> T=tuple(tmp)
>>> T
('cc', 'aa', 'dd', 'bb')

Python基础(3)--列表和元组的更多相关文章

  1. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  2. python基础4 列表和元组

    一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...

  3. python基础之 列表,元组,字典

    other help(str.strip) #查看是否有返回值以及返回值类型[] :称为索引操作符 1.列表 列表相比字符串来说能存储大量数据的python的基本数据类型,并且也拥有字符串的一些方法( ...

  4. Python基础学习 -- 列表与元组

    本节学习目的: 掌握数据结构中的列表和元组 应用场景: 编程 = 算法 + 数据结构 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符,或者其他数据 ...

  5. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

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

  6. python基础之列表、元组

    一.列表 列表(list)是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 作用:多个装备,多个爱好,多门课程,多个女朋友等 定义:[ ]内可以有多个任意类型的值,逗号 ...

  7. Python基础之列表、元组、字典、集合的使用

    一.列表 1.列表定义 names=["Jhon","Lucy","Michel","Tom","Wiliam ...

  8. Python基础:列表,元组和字典的基本操作

    列表(集合list)的基本操作: # 列表的常见操作 nameList = ["张学友", "刘德华", "郭富城", "黎明&q ...

  9. python基础之列表、元组和字典

    列表 列表定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序 ...

  10. python基础知识-列表,元组,字典

    列表(list) 赋值方法: l = [11,45,67,34,89,23] l = list() 列表的方法: #!/usr/bin/env python class list(object): & ...

随机推荐

  1. HIVE: UDF应用实例

    数据文件内容 TEST DATA HERE Good to Go 我们准备写一个函数,把所有字符变为小写. 1.开发UDF package MyTestPackage; import org.apac ...

  2. ThinkJS 项目用 WebStorm 来设置断点与调试

    1. 前置条件.已按ThinkJS 2.0 文档 之 <创建项目> 建好项目. 说明a: 本示例创建项目名为wagang,使用es6配置: thinkjs new wagang --es6 ...

  3. SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework

    6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...

  4. 整合ssh model $$_javassist_13 cannot be cast to javassist.util.proxy.Proxy

    经goole stackoverflow 发现是 javassit 包冲突 项目使用的是maven 检查依赖包

  5. [OpenCV] Identify and Track Specific Object

    Abstract—Augmented Reality (AR) has become increasingly popular in recent years and it has a widespr ...

  6. Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架

    Guzzle 减轻了发送 HTTP 请求和创建 Web 服务客户端的痛苦.它包含建立一个强大的网络服务客户端的工具,包括:服务描述定义的输入和输出的 API,资源迭代器遍历分页资源,尽可能有效地发送大 ...

  7. Mac常用基本命令/常用Git命令

    Git地址: https://github.com/mancongiOS/command-line基本命令 目录/文件的操作 mkdir "目录名" 在当前路径下创建一个文件夹 m ...

  8. [python]新手写爬虫v2.5(使用代理的异步爬虫)

    开始 开篇:爬代理ip v2.0(未完待续),实现了获取代理ips,并把这些代理持久化(存在本地).同时使用的是tornado的HTTPClient的库爬取内容. 中篇:开篇主要是获取代理ip:中篇打 ...

  9. 下载image或者其他文件

    public void SaveDownLoadAsPNG(Image img, string filePath) { try { WebRequest request = WebRequest.Cr ...

  10. Angular系列------AngularJS入门教程:导言和准备(转载)

    学习AngularJS的一个好方法是逐步完成本教程,它将引导您构建一个完整的AngularJS web应用程序. 该web应用是一个Android设备清单的目录列表,您可以筛选列表以便查看您感兴趣的设 ...