python中有6种序列的内置类型,分别为:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象

列表和元组是最常见两种类型。

下面将以列表(list)和元组(tuple)为例对序列操作进行详细的讲解:

一、列表(list)

列表序列操作有:索引、切片、修改、追加、插入、删除、扩展、统计、排序(翻转)、获取下标、拷贝

1. 索引 (list[i])

列表的索引序号(又称为下标)如下图所示,该序列一共拥有n个元素,

  从左到右索引是从 0 开始,  n-1 为最后一个元素

  从右到左索引是从 -1开始, -n 为第一个元素

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals[0] # 'Dog'
animals[3] # 'Chook'
animals[-1] # 'Snake'
animals[-3] # 'Monkey'
type(animals[1]) # <class 'str'>

 注意:通过索引取出的元素类型为 str

2. 切片 (list[a:b])

索引只能取出python列表中的一个元素,此外,python为取多个列表元素提供了强大的切片操作,通过冒号(:)分割的两个索引来实现

注意点:

1. 切片的索引界限可以利用谚语 “顾头不顾尾” 来记忆,也可以理解为数学中的左闭右开,数学式为: [a, b)

2. 如果省略分隔符前面的索引值,如list[:b],则表示为从第一个元素开始索引,数学式为:[0,b)

如果省略分隔符后面的索引值,如list[a:],则表示为从a开始索引,索引到最后一个元素结束,此时表现为 “顾头又顾尾”,数学式为[a,end]

  如果两个索引值全部省略不写,list[:],此时表示取整个列表

3. 列表可以按照某种规则索引元素,如list[first:end:step],frist和end索引与前面的a,b一样,step表示步长,此方法常用于循环中

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals[1:3] # ['Cat', 'Monkey']
animals[3:] # ['Chook', 'Snake']
animals[:3] # ['Dog', 'Cat', 'Monkey']
animals[:] # 整个列表
animals[1:4:2] # ['Cat', 'Chook']
animals[::2] # ['Dog', 'Monkey', 'Snake']

3. 修改 

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals[3] = 'Horse' #将下标为3的元素修改为 'Horse'
print(animals)

输出

['Dog', 'Cat', 'Monkey', 'Horse', 'Snake']

4. 追加 (list.append(elem))

append只能追加一个元素,而且只能追加到列表的最后

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals.append('Ox') # 向列表追加元素
print(animals) fish = ['freshwater_fish', 'saltwater_fish'] # 鱼(淡水鱼和咸水鱼)
animals.append(fish) # 将鱼追加到 animals 列表里
print(animals)

输出:

['Dog', 'Cat', 'Monkey', 'Chook', 'Snake','Ox']
['Dog', 'Cat', 'Monkey', 'Chook', 'Snake','Ox', ['freshwater_fish', 'saltwater_fish']]

5. 插入 (list.inset(i, elem))

i代表位置,elem代表元素

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals.insert(3, 'Horse')
print(animals) fish = ['freshwater_fish', 'saltwater_fish']
animals.insert(-4, fish)
print(animals)

输出:

['Dog', 'Cat', 'Monkey', 'Horse', 'Chook', 'Snake']
['Dog', 'Cat', ['freshwater_fish', 'saltwater_fish'], 'Monkey', 'Horse', 'Chook', 'Snake']

6. 删除

删除分为删除元素和删除整个列表

删除元素的命令有:del,remove,pop

del list[i]

list.remove(elem)

list.pop()

>>>animals
['Dog', 'Cat', ['freshwater_fish', 'saltwater_fish'], 'Monkey', 'Horse', 'Chook', 'Snake']
>>>del animals[2]
>>>animals
['Dog', 'Cat', 'Monkey', 'Horse', 'Chook', 'Snake']
>>>
>>>animals.remove('Chook') # 删除指定元素
>>>animals
['Dog', 'Cat', 'Monkey', 'Horse', 'Snake']
>>>
>>>animals.pop() # 删除最后一个元素
'Snake'
>>>animals
>>>['Dog', 'Cat', 'Monkey', 'Horse']

删除整个列表:

del animals     #删除整个列表

7. 扩展  ( list.extend(new_list) )

扩展是将一个列表追加到另一个列表,组成一个新的列表

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
fish = ['freshwater_fish', 'saltwater_fish']
animals.extend(fish) # 将fish列表追加到animals列表后,组成一个新的列表
print(animals)

输出:

['Dog', 'Cat', 'Monkey', 'Chook', 'Snake', 'freshwater_fish', 'saltwater_fish']

注意下面的情况:

animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake']
animals.extend('fish')
print(animals)

输出:

['Dog', 'Cat', 'Monkey', 'Chook', 'Snake', 'f', 'i', 's', 'h']

8. 统计  list.count(elem)

统计元素出现的次数

>>>animals = ['Dog', 'Cat', 'Monkey', 'Chook', 'Snake', 'Dog']
>>>animals.count('Dog')
2
>>>animals.count('Cat')
1
>>>animals.count('fish')
0
>>>
>>>cat = 'Cat'
>>>animals.count(cat)
1

9. 排序(翻转)

排序:

  list.sort(self, key=None, reverse=False)

  key 可以为int,str, len, lambda等

  reverse可以为True和False

数字情况: 默认从小到大排列

>>> aa = [234, 23, 2, 123]
>>> aa.sort() # 数字从小到大排列
>>> aa # 列表的顺序改变了
[2, 23, 123, 234]
>>> aa = [234, 23, 2, 123]
>>> aa.sort(reverse=True) # 默认从小到大排列,然后转置了
>>> aa
[234, 123, 23, 2]
>>> aa.sort(key=len) # 数字不能用len
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
aa.sort(key=len)
TypeError: object of type 'int' has no len()

字符串情况: 默认ASCII表先后顺序排列

>>> a = ['x11','abc323','e26','112ddd']
>>> a.sort() #默认按照ASCII表先后顺序排序
>>> a
['112ddd', 'abc323', 'e26', 'x11']
>>> a.sort(key=len) # 默认第一原则 字符串从短到长排序,第二原则ASCII表先后顺序
>>> a
['e26', 'x11', '112ddd', 'abc323']
>>> a.sort(key=len,reverse=True)
>>> a
['112ddd', 'abc323', 'e26', 'x11']

注意: python3.0不允许不同数据类型进行排序 

同时有数字和字符串的情况,不能排序:

>>>a = ['x', 'y', 1, 2]
>>> a.sort()
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
a.sort()
TypeError: unorderable types: str() < int()

翻转:

    list.reverse()

>>> a = ['x', 'y', 1, 2]
>>> a.reverse()
>>> a
[2, 1, 'y', 'x']

10. 获取下标  (list.index(elem))

list.index(self,value,[start,[stop]])

value: 带获取下标的元素

start: 开始查询的下标

stop:终止查询的下标

>>> a = ['x', 'y', 1, 'x', 2, 'x']
>>> a.index('x')
0
>>> a.index('x',1)
3
>>> a.index('x',4)
5

11. 拷贝 (list.copy())

list.copy为浅拷贝,即只为列表元素的第一层开辟新地址,而第二层共用第一层的地址,也就是说,列表元素的第一层可以独立修改,而第二层不可独立修改,请看下面例子:

>>>list_1 = ['x', 'y', 'z', [1, 2, 3]]  # 创建list_1
>>>list_1_copy = list_1.copy() # 拷贝list_1
>>>list_1_copy[1] = 'Y' # 修改第一层元素的值
>>>print(list_1, list_1_copy) # 修改的第一层位置元素不同
['x', 'y', 'z', [1, 2, 3]] ['x', 'Y', 'z', [1, 2, 3]]
>>>list_1_copy[-1][0] = '' # 修改第二层元素的值
>>>print(list_1, list_1_copy) # 修改的第二层位置元素相同
['x', 'y', 'z', ['', 2, 3]] ['x', 'Y', 'z', ['', 2, 3]]

或者用copy模块的copy方法,同样是浅拷贝:

import copy
list_1 = ['x', 'y', 'z', [1, 2, 3]] # 创建list_1
list_2 = copy.copy(list_1) # 浅拷贝
list_1[1]= 'Y' # 改变第一层的值
list_2[-1][-3] = '' # 改变第二层的值
print(list_1, list_2) # 输出
['x', 'Y', 'z', ['', 2, 3]] ['x', 'y', 'z', ['', 2, 3]]

深拷贝需要用deepcopy方法:

import copy
list_1 = ['x', 'y', 'z', [1, 2, 3]] # 创建list_1
list_3 = copy.deepcopy(list_1) # 深拷贝
list_1[2]= 'zz'
list_3[-1][-3] = 888
print(list_1, list_3) #输出,注意第二层的元素变化情况
['x', 'y', 'zz', [1, 2, 3]] ['x', 'y', 'z', [888, 2, 3]]

二、元组(tuple)

元组与列表相比要简单很多,因为元组一旦创建成功就不能修改,所以一般称为只读列表

元组的创建与索引:

>>> a = (1, 2, 'a')      # 注意此处的小括号
>>> a
(1, 2, 'a')
>>> a[1] # 索引仍然用中括号
2
>>> a[1:]
(2, 'a')

tuple只有两个方法,count和index。

>>> b = ('x', 'y', 1, 'x', 2, 'x')
>>> b.index('x', 1)
3
>>> b.count('x')
3

python 列表、元组 详解的更多相关文章

  1. python第七篇:Python 列表操作详解

    Python列表操作详解 list函数 list()   #生成一个空的列表 list(iterable)  #用可迭代对象初始化一个列表 列表的 and 运算和 or 运算 列表and运算 > ...

  2. python 列表操作方法详解

    列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确定最大和最 ...

  3. python列表操作方法详解

      列表 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确 ...

  4. Python列表切片详解([][:][::])

    Python切片是list的一项基本的功能,最近看到了一个程序,里面有这样一句类似的代码: a = list[::10] 1 不太明白两个冒号的意思就上网百度,发现大多数人写的博客中都没有提到这一个用 ...

  5. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

  6. python 字符串操作方法详解

    字符串序列用于表示和存储文本,python中字符串是不可变对象.字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串.其中三引号可以由多行组成,编写 ...

  7. python 字典操作方法详解

    字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...

  8. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  9. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  10. (转)python collections模块详解

    python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...

随机推荐

  1. Head First HTML与CSS阅读笔记(一)

    之前写过不少前端界面,但是没有完整阅读过一本HTML与CSS的书籍,都是用到什么查什么,最近闲暇之余想巩固加深一下前端基础方面的知识,阅读了<Head First HTML与CSS>,感觉 ...

  2. IOS Modal(切换另外控件器方式)

    ● 除了push之外,还有另外一种控制器的切换方式,那就是Modal ● 任何控制器都能通过Modal的形式展示出来 ● Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止 ...

  3. xtrabackup 安装

    xtrabackup 安装   yum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL  perl-Dige ...

  4. 2017.12.14 Java实现-----图书管理系统

    通过对图书的增删改查操作 用数组实现 Manager类 package demo55; import java.util.*; public class Manager { Scanner sc = ...

  5. 跑rbgirshick的fast-rcnn代码

    需要安装Caffe.pycaffe cython.python-opencv.easydict matlab(主要用于对PASCALvoc数据集的评估) 为什么要bulid cython.caffe. ...

  6. spring-boot自定义启动端口

    有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的端口号是8080,所以这时候我们就需要修改SpringBoot的默认端口了.修改SpringBoot的默认端口有两种方式 ...

  7. java实现微信扫一扫详解

    java实现微信扫一扫详解 一.微信JS-SDK参数配置及查找 JS安全域名配置(查找:微信公众号里-公众号设置-功能设置页) 注:1.安全域名外网必须可以访问的到  2.域名不能有下划线  3.要将 ...

  8. git常用命令以及速查命令

    工作中使用的是git,所以写这个只是为了加深自己的记忆,提高熟练度 共勉~ git 主要命令 要关联一个远程库,使用命令git remote add origin git@server-name:pa ...

  9. mac利用套件管理工具homebrew正确地同时安装python2.7和python3

    MAC OSX 正確地同時安裝 PYTHON 2.7 和 PYTHON3     Python3 出來了(其實已經出來很久了,暈)!但是還是有很多 library 還是使用 Python2.7,所以要 ...

  10. Windows CMD命令 查看无线密码

    netsh wlan show profiles netsh wlan show profiles name='无线网络名称' key=clear