前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python随记(一)列表和元组

Python随记(一)列表和元组

作者头像
TeeyoHuang
发布2017-12-28 14:41:06
1.1K0
发布2017-12-28 14:41:06
举报

Python随记(一)列表和元组

Python中最基本的数据结构就是序列了。Python一共包含6种内建序列:列表、元组、字符串、Unicode字符串、xrange对象、buffer对象。序列都可以进行的操作包括索引,切片,加,乘,检查成员。

本篇随记先讲两个最基础的序列:列表元组。其实这两个很像C++中的数组结构,但是有其本身的特点,各位学习的过程中可以自己联想其中的共通性,但是不要搞混淆。

一、列表(List)

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

List1 = [1, 2, 3, 4, 5 ];

List2 = [‘a’ , ’b’ , ’c’ ,’d’ , ’e’ , ’f’ ];

列表的数据项不需要具有相同的类型:

List3 = ['A', 'B', 1, 2];

这三个List作为例子下文会用到。。。

1、 索引(indexing

序列中的所有元素都是有标号的,和其他很多语言一样,是从0开始的。

可以通过索引来访问列表中的某个元素,如List3[0]的值就是‘A’,

索引可以为负数,但是最后一个元素的索引对应的是-1只有正序第一个元素的索引为0。

2、 分片(sliding)

分片操作用来访问一定范围内的元素,分片通过冒号隔开的两个索引实现。这两个索引作为边界,第1个索引包含在分片内,第2个索引是剩下的元素中的第一个元素的索引。比如List[m : k+1]其实是指的是索引为 m~k这个区间的元素。

以上文中提到的三个List来举例哈:

①  普通情况:

如List2[1,4]=[‘b’, ‘c’, ‘d’]

List2[0: 6] =[‘a’, ’b’ , ’c’ ,’d’ , ’e’ , ’f’ ];,虽然我们的索引其实只是0到5,但是这里第二个边界写6是可以的,因为只取到索引为(6-1)的这个元素为止,并没有超出List2的大小。

②这里的索引同样可以为负数:

List2[-4 : - 1] = [‘c’, ‘d’, ‘e’],注意这里第二个边界虽然写的是-1,但是同样是不能把索引为 -1的这个元素包含进去的,那么我现在想把最后一个元素也包含进去该怎样做?

List2[ -4:  ] = [‘c’, ‘d’, ‘e’, ‘f’],就是说直接把第二个边界空着,它就会一直包含到底。

③其他步长的情况:

其实在分片时,不止可以提供两个边界,还可以提供第三个参数,步长。前面不写,程序就是用的默认步长:+1.

List2[0: 6,2] =[‘a’ , ’c’ , ’e’ ] 

这里步长为2,所以取的其实就是List2[0]、List2[0+2]、List2[0+2*2]这三个元素。

④逆序(步长为负数)

前面的三种情况,我们输出的列表的元素的顺序和原来列表的顺序是一致的,因为默认的步长是+1!其实也可以倒着输出,这时候把步长设置为负数就好。注意,步长为负数时,第一个边界对应的索引应该比第二个边界大,这样才能倒着输出:

List2[6:0,-1] =[‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’];

注意,此处来个对比

List2[0:6, 2] =[‘a’ , ’c’ , ’e’ ]

List2[6:0,-2] =[‘f’ , ’d’ , ’b’ ]

一个是正序,一个是逆序,只不过步长的绝对值是2,这样能看出区别来,不要以为逆序就是简单的把正序给倒过来而已

List2[0:6, 2]取的其实就是List2[0]、List2[0+2]、List2[0+2*2]这三个元素!

List2[6:0,-2]取的是List2[5]、List2[5-2]、List2[5-2*2]这三个元素!为什么这样呢,因为倒序时,我的第一个边界其实就是刚才正序时的尾边界,所以仍然要执行减一这个操作!

3、 序列相加

这一步其实很像C++中字符串string类的操作,就是两个相同类型的序列相加之后得到一个新序列。何谓相同类型,就是我最开始说的序列包含6个种类,(一定不要把序列(Sequence)和列表(List)搞混啊,列表只是序列的一种,序列是个大概念),相同种类的序列才能相加

4、 乘法

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

空列表:[ ]

如果想要构造一个占K个元素空间的空列表,可以有[None] * K。

5、 成员资格

检查一个值是否在列表中,可以使用in运算符。返回值为false或者true。

6、 列表的一些基本操作

①赋值和分片赋值(太简单不讲了)

这里有个点要注意!!!

如果已有一个列表List1,使用赋值 y=List1,         其实并没有新创建一个列表。

这样的操作使得y和List1指向同一个列表,有点C++中引用的意思。

正确的给新的列表的赋值的方式是 y = [ : ],这样就得到一个新的列表且元素和y一模一样了。

②删除元素:就是用del语句实现(delete的前三个字母)

7、 基本的列表方法

append,用于在列表末尾追加新的对象(其实append的英文意思就是添加)

List1 = [1, 2, 3, 4, 5 ];

List1.append(9)

List1= [1, 2, 3, 4, 5, 9 ]

count方法统计某个元素在列表中出现的次数,返回值就是次数

extend,在列表的末尾一次性追加另一个序列中的多个值。就是可以用新列表扩展原有列表。

List1 = [1, 2, 3, 4, 5 ];

List2 = [‘a’ , ’b’ , ’c’ ,’d’ , ’e’ , ’f’ ];

List1.extend( List2)

List1 =  [1, 2, 3, 4, 5, ‘a’ ,’b’ , ’c’ ,’d’ , ’e’ , ’f’ ];

看起来很像加法,实则不然!这个操作中,List1的值已经更新了,是对List1的操作。而加法运算,两个序列相加后,原来的两个序列还在,没变,产生的新的序列占用的是新开辟的内存空间。

 ④index 用于从列表中找出某个值第一个匹配项的索引位置

 ⑤insert 用于将对象插入到列表

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

List1. Insert(3,‘A’)

List1 = [1, 2, 3, ‘A’, 4, 5 ]

可见把原来索引为3的元素4以及后面的元素5都依次后移,然后在索引为3的位置插入了新的元素。

⑥pop    移除列表的一个元素,默认是最后一个。它是惟一一个既返回数值,且同时修改原列表的列表方法。

List1.pop( )   默认移除最后一个元素

List1.pop(2)  移除索引为2的元素,是以索引为参考

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

  个人感觉这个操作相当于,先用index找出你要的找的这个元素索引,然后我用pop( )方法去移除这个索引位置元素。现在这两个操作融合到一起,就成了remove(这是我自己的感觉,有错误还请指正0-0),直接找元素然后删元素。

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

⑨sort    用于在原位置对列表进行排序,意味着也是要改变原来的列表而不是简单的返回一个副本而已。

  如果你想既要有原来的列表,又要有换序后的列表.有两种操作方法,

A、y=List1[ : ]

y.sort( )

这样List1还在,而y是换序后的列表

B、 使用sorted 函数

Y = sorted ( List1)

二、元组(Tuple)

元组与列表一样,也是一种序列。唯一的不同是元组不能修改(字符串同样也不能修改)

1、  创建元组

如果用逗号分隔开了一些值,那么就自动创建了元组。

如:输入 2,3,4

得到(2,3,4)

元组大部分时间是通过圆括号括起来的。

注意,如果要创建一个只有一个元素的元组,同样要添加逗号。

>>>123

123

>>>123,

(123,)

>>>(123,)

(123,)

2、  元组和列表的相互转化

list()函数将元组转化为列表

输入list( (1, 3, 5, 7) )

就等于[1, 3, 5, 7]

,tuple函数将列表转化为元组

输入tuple( [2, 4, 6, 8] )

就得到 (2, 4, 6, 8)

3、  元组操作,

因为元组不可变,所以其实基本上就是创建和访问元组这些操作,没有像列表那么多的操作。

访问通过索引方式访问,分片也一样的操作。

4、  意义何在?

①元组可以在映射(和集合的成员)中当作键使用,而列表不行

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python随记(一)列表和元组
    • 一、列表(List)
      • 1、 索引(indexing)
      • 2、 分片(sliding)
      • 3、 序列相加
      • 4、 乘法
      • 5、 成员资格
      • 6、 列表的一些基本操作
      • 7、 基本的列表方法
    • 二、元组(Tuple)
      • 1、  创建元组
      • 2、  元组和列表的相互转化
      • 3、  元组操作,
      • 4、  意义何在?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档