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

原创
2017/06/15 15:34
阅读数 29

目录:

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部