文档章节

【Python初级】003-列表和元组

乐搏学院
 乐搏学院
发布于 2017/06/15 15:34
字数 2757
阅读 9
收藏 0

目录:

1:序列操作

   ------索引

   ------分片

   ------步长

   ------序列运算

   ------成员资格检验

   ------内建函数-len-max-min

2:列表操作

   ------list函数    

   ------改变列表

   ------删除元素

   ------分片赋值

3:列表方法

   ------append 在列表末尾添加新的元素

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

   ------extend 在列表末尾一次性追加多个元素

   ------index 从列表中找出某个元素第一个匹配项的索引位置

   -----insert 将对象插入到列表中的某一个索引位置

   ------pop 默认从列表中最后一个移除元素

   ------remove 移除列表中某个值的第一个匹配项

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

   ------sort 在原位置对列表进行排序

4:元组

 

 

一:序列操作

  数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字,字符串门,在python中最基本的数据结构是序列。

 

序列号

wKioL1hCTpSSzN3TAAAiSS7DEW8539.png 

解析:列表中的每一个值都称为元素,每一个元素都有自己的一个序列号,也称编号或者索引,其中序列的编号方法是第一个元素编号为0,以此类推。用负数来表示是倒数第一个的编号为-1,负数编号的最后一位元素不能为0,要是为0 的话就无法确定是正数编号中的第一个还是负数编号中的第一个了。

 

    ------索引

序列包括字符串正数等,并且没有序列中的元素都有一个编号,即索引,索引都是从0开始递增的。

>>> txt = 'python'

>>> txt[2]

't'

字符串就是由字符组成的序列,索引的0指向字符p

 

    ------分片

如果想要访问序列中的一个范围内的元素,那么就可以用分片来实现。分片的书写方式是以‘:’隔开的两个索引来实现,两个索引表示的就是分片的边界。如[5:8],索引5所代表的是分片的边界,属于分片的第一位,8表示的是分片片的剩余部分的第一位元素(不包括在分片内)。

例子:通过分片访问元素的范围,从裂变开始元素计数【正索引】

>>> nembers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

>>> nembers[1:8]

[2, 3, 4, 5, 6, 7, 8]

>>> nembers[0:1]

[1]

例子:通过分片访问元素的范围,从列表结尾元素计数【负索引】

>>> nembers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

>>> nembers[-7:-2]

[10, 11, 12, 13, 14]

注意:通过负索引来访问列表范围需要的注意的是,最左边的索引要小于最最右边的索引,即最左边的索引指向的元素出现的时间要早于最右边的索引指向的元素。不然的话,结果就会出现一个空序列了。

如:

>>> nembers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

>>> nembers[-3:-6]

[]

 

例子:通过分片访问元素的范围中有序列的第一个元素(0)或者最后一个元素(-1)

如果指定分范围中的索引有第一个元素或者最后一个元素,那么只需要空左边或者右边的索引就OK了。

>>> nembers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

>>> nembers[:5]

[1, 2, 3, 4, 5]

>>> nembers[-5:]

[12, 13, 14, 15, 16]

>>> nembers[:]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

注:当索引两边都空时,那么现实的是整个序列的内容。

 

    ------步长

上述的分片中,所用的索引的步长都是“1”。那么当步长大于1的时候呢?这是正数步长,那么当步长为负数的时候呢? [1:5]这样的分片中步长为1,没有表示出来,这是隐式设置。[1:5:2]这样的分片中的步长为2,表示出来了,这是显示设置。

>>> nembers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

>>> nembers[1:9:2]

[2, 4, 6, 8]

注:步长不能为0,不论步长是正数还是负数,都是从序列开始元素开始的,步长为正数时,序列从左到右,步长为负数时,序列从右到左。

 

    ------序列运算

序列连接(+)操作

>>> [1,2,3,4] + [5,6,7,8]

[1, 2, 3, 4, 5, 6, 7, 8]

>>> ['1'] + [2]

['1', 2]

 

例子:测试两种不同类型的序列相连接

>>> [1,2,3] + 'shuzi'

Traceback (most recent call last):

  File "<pyshell#34>", line 1, in <module>

    [1,2,3] + 'shuzi'

TypeError: can only concatenate list (not "str") to list

解析:相连接在一起的必须都是序列,而且序列的类型是要相同的。如上述例子列表和字符串是不能连接在一起的。

 

序列乘法(*)操作

   序列乘法的操作不是连接在一起的,而是将原来的序列进行重复x次

例子:

>>> 'My first language is python,' * 2

'My first language is python,My first language is python,'

 

None,空列表和初始化

空列表是指在中括号[]中不插入任何的值。如果要想在这个空列表中占用一些元素空间却不包括任何内容就需要用到None。None是python的内建值,他意味着序列中没有任何值,因此只需要将[None]*x 就OK了。

例子:创建一个具有100个元素的空序列

>>> source = [None] * 100

>>> source

[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]

 

    ------成员资格检验--in

有时候,当序列中的元素过多的时候,想要查看序列中是否有某个元素的时候,就可以用in运算符来检查序列中是否有这个元素。成员资格检验运算符in在检验的时候,如果序列中有这个元素的时候就会返回一个布尔值(True,False)。

例子:

>>> txt = ['yuer','doudou',88,99]

>>> 99 in txt

True

>>> 'baidu' in txt

False

 

    ------内建函数-len-max-min)

len函数返回的是序列中所包含元素的数量,max和min函数返回的序列中的最大值和最小值。

例子:

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

>>> len(txt)

9

>>> max(txt)

9

>>> min(txt)

1

注释:调用内建函数时,序列中的元素只能是数字,不能是字符串,有字符串的话,否则会报错。

如:

>>> txt = [1,2,3,'yu']

>>> max(txt)

Traceback (most recent call last):

  File "<pyshell#28>", line 1, in <module>

    max(txt)

TypeError: unorderable types: str() > int()

2:列表操作

    列表listpython中作用很强在,列表可以包含不同类型的数据对像,同时它是一个有序的集合。所有序列能用到的标准操作方法,列表也都可以使用。比如切片、索引等,python的列表是可变数据类型,它支持添加、修改、删除等操作

 

列表分为三种

-- 普通列表

-- 混合列表

-- 空的列表

 

1:普通列表

>>> member = [1,2,3,4,5]

>>> member

[1, 2, 3, 4, 5]

>>> len(member)

5

>>> next = ['2','3']

>>> next

['2', '3']

 

2:混合列表

>>> nember = ['I love you','3',3,3.9,3e-9]

>>> nember

['I love you', '3', 3, 3.9, 3e-09]

 

列表可以包含不同类型对像,也支持嵌套:

例如a = ['a',567,['adc',4,],(1,2)]

这个列表中就包含了字符串、整型、元组这些元素,同时还嵌套了一个列表。

 

3:空的列表

   列表是有序的,可以通过python list下标来修改特定位置的值。列表的修改操作,也可以把它看成是特定位置重新赋值的操作。

 

例子:

>>> empty = []

>>> empty

[]  

  ------list函数

>>> list('python')

['p', 'y', 't', 'h', 'o', 'n']

 

  ------改变列表

例子:

>>> txt = [1,2,3,4,5,6]

>>> del txt

>>> txt = [1,2,3,4,5,7]

>>> txt[5] = 6

>>> txt

[1, 2, 3, 4, 5, 6]

注:改变列表就是替换列表中的元素

   ------删除元素

例子:

>>> txt = [1,2,3,4,5,6]

>>> del txt[5]

>>> txt

[1, 2, 3, 4, 5]

   ------分片赋值

例子:

>>> txt = list('123456')

>>> txt

['1', '2', '3', '4', '5', '6']

>>> txt[2:] = list ('python')

>>> txt

['1', '2', 'p', 'y', 't', 'h', 'o', 'n']

 

3:列表方法

   ------append 在列表末尾添加新的元素

例子:

>>> member.append(3)

>>> member

[1, 2, 3, 4, 5, 3]

>>> len (member)

6

>>> nember.append('3.4e')

>>> nember

['I love you', '3', 3, 3.9, 3e-09, '3.4e']

 

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

>>> txt = ['a','b','c','d','e','f','g','a','b','c','e','f','g',1,2,3,1,2,5,]

>>> txt.count('a')

2

>>> txt.count(1)

2

   ------extend 在列表末尾一次性追加多个元素

>>> next.extend( [ '5',6e-3 ] )

>>> next

['2', '3', '5', 0.006]

 

   ------index 从列表中找出某个元素第一个匹配项的索引位置

例子:

>>> txt = ['yuer','mobanche','1',2,3]

>>> txt.index('yuer')

0

>>> txt.index (3)

4

>>> txt.index (0)

Traceback (most recent call last):

  File "<pyshell#86>", line 1, in <module>

    txt.index (0)

ValueError: 0 is not in list

注:整数0 ,没有呢在列表中,措意会报错

 

   -----insert 将对象插入到列表中的某一个索引位置

例子:向列表中添加元素放到第一位

>>> next.insert(0,'小鱼儿')

>>> next

['小鱼儿', '2', '3', '5', 0.006]

注释:用insert表示的是在此位置上进行插入一个新的值。此位置上之前的值会移到下一个下标

另一种方法

>>> next[0] = '豆豆'

>>> next

['豆豆', '2', '3', '5', 0.006]

注释:这里直接在中括号中写入小标,是表示在此下标中替换一个新的值,次下标之前的值就没有了。

 

   ------pop 默认从列表中最后一个移除元素

例子:

>>> xue = 5

>>> title = ['5',3,xue,5e+2]

>>> title.pop()  #默认从最后一个元素删除

500.0

>>> title

['5', 3, 5]

 

>>> title = ['5',3,xue,5e+2]

>>> title.pop(-2)

5

>>> title

['5', 3, 500.0]

>>> title.pop(1)

3

>>> title

['5', 500.0]

 

   ------remove 移除列表中某个值的第一个匹配项

例子:

>>> xue = 5

>>> title = ['5',3,xue,5e+2]

>>> title.remove(3)

>>> title

['5', 5, 500.0]

注:移除的时候,直接写列表中的元素,不是写列表中元素的索引

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

例子:

>>> txt = ['mobanxhe',123,5]

>>> txt.reverse ()

>>> txt

[5, 123, 'mobanxhe']

   ------sort 在原位置对列表进行排序

例子:

>>> txt = [45,6,8,85,5]

>>> txt.sort()

>>> txt

[5, 6, 8, 45, 85]

 

 

4:元组

 

元组和列表一样也是一种序列,唯一不同的就是元组不可以修改,而列表是可以修改的。(字符串也不可以修改),创建元组一般都是以圆括号括起来的,实际上元组的重点标志是‘,’逗号,每一个元素之间都要有逗号隔开。

 

例子:

>>> text = (1,2,3)

>>> text

(1, 2, 3)

>>> 1,2,3,

(1, 2, 3)

 

注:当元组中即使只有一个元素的时候也需要用逗号隔开

>>> team = (0,)

>>> team

(0,)

>>> type(team)

<class 'tuple'>

 

>>> txt =(0)

>>> txt

0

>>> type(txt)

<class 'int'>

 

拼接操作符

>>> a=(1,2,3,)

>>> b=(4,5,6,)

>>> c = a+b

>>> c

(1, 2, 3, 4, 5, 6)

 

>>> str1='I love you'

>>> str1[:6] + 'yu' + str1[6:]

'I loveyu you'

>>> str1[:6] + 'str' + str1[6:]

'I lovestr you'

>>> str1

'I love you'

>>> str1=str1[:6] + 'yu' + str1[6:]

>>> str1

'I loveyu you'

 

重复操作符

>>> a=(1,2,3,)

>>> b=(4,5,6,)

>>> d=3*a + 2*b

>>> d

(1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6)

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

本文出自 “末班车” 博客,请务必保留此出处http://blxueyuan.blog.51cto.com/9673381/1879092

© 著作权归作者所有

乐搏学院
粉丝 9
博文 526
码字总数 707467
作品 0
丰台
程序员
私信 提问
介绍Python中6个序列的内置类型

1、Python中6个序列的内置类型分别是什么? Python包含6中内建的序列,即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象。序列通用的操作包括:索引、长度、组合(序列相加)...

问题终结者
03/24
15
0
面试时全对这25道python面试题,成就了我月薪20K!

之前面试的时候,面试官拿出一些python面试题对我说,只要全部正确直接给我20K,我一看题目笑了,居然全部都会,今天拿出来给大家分享一下~ 先给大家介绍一下python Python 是一种解释型,交...

Python小老弟
03/17
0
0
Python爬虫入门 | 3 爬虫必备Python知识

点击上方蓝色字体,关注我们 15 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源。看着文章,打开电脑动手实践,平均45分钟就...

ch3ruf0termb3yh
2018/04/20
0
0
[python][collections] namedtuple 命名元组

关于 collections 模块 python 自带的一些数据类型已经非常实用了,但在一些情况下,原生的数据结构并不能满足我们的需求。而在 python 中,想从底层定义一种数据类型又特别困难。因此, py...

cometeme
2018/12/07
49
0
Python学习系列入门篇(二)

这些天忙的不可开交,今天终于想起来继续写,工欲善其事必先利其器,得找个markdown编辑器用一下,windows找了个破解版的(主要是可以传图片),使用起来还不错,支持实时预览,就用它了,首...

疑似一僧
2014/03/17
106
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
13
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部