python 序列类型以及list(列表) 和 tuple(元组)详解 以及range的用法

来源:互联网 发布:战舰世界数据查询 编辑:程序博客网 时间:2024/05/17 06:45


参考:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819318453af120e8751ea4d2696d8a1ffa5ffdfd7000

http://www.cnblogs.com/IPrograming/p/Python_list_tuple.html

http://www.2cto.com/kf/201312/269109.html

####################################################################


序列:成员是有序排列,可以通过下标偏移量访问到它的一个或多个成员

在python中有六种内建的序列:列表、元素、字符串、Unicode字符串、buffer对象和xrange对象。以下仅讨论列表和元组对象

列表和元组的主要区别在于:列表可以修改,元组不能


通用序列操作:

所有的序列都可以进行某些特定的操作:

1.索引(index)

2.切片(slice)

3.加(+)

4.乘(*)

5.检测某个元素是否属于这个序列(in或not in)

6.计算序列长度(len())

7.找出最大元素和最小元素(min()、max())


1.索引:序列中所有的元素都有编号,索引从0开始递增。使用负数索引时,python会从右边开始计数(-1指的是序列最右边的元素)



2.切片:除了可以使用索引访问单个元素,还可以使用切片操作来访问一定范围内的元素。切片操作需要两个索引来作为边界,第一个索引的元素是包含在切片内的,而第二个则不包含(python惯例)



在进行分片的时候开始和结束点需要进行指定(显示或隐式)。而另一个参数--步长(step length)通常都是隐式设置的,默认值为1.

如果步长为1:切片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素。



步长不能为0,但是可以为负数--即从右向左提取元素。使用一个负数作为步长时,必须让开始点(开始索引)大于结束点


解释:numbers[6:3:-1]输出为[7, 6, 5],  因为第一个索引为6,输出numbers[6]=7,步长为-1,所以从右往左提取元素,

第二个参数为3,表示提取到numbers[3]=4为止,但不包括numbers[3],所以输出为[7,6,5]


3.序列相加:使用加号可以对两个类型相同的序列进行连接操作:



4.乘法:使用数字n乘以一个序列会生成新的序列,在新的序列中,原来的序列将被重复n次。



5.成员判断:可以使用in或not in运算符判断一个对象是否为某个序列的成员



6.长度、最大值和最小值

python的内置函数:len/min/max,其作用分别是:返回序列中包含元素的数量,返回序列中最小和最大的元素



######################################


类型转换:使用内置函数list()、tuple()和str()函数可以实现对象转换



reversed()函数:反转一个对象,返回一个迭代器(iterator)



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



###################################################################3


list:Python内置的一种数据类型。list是一种有序的集合,可以随时添加和删除其中的元素


list=['as',  1234, False, ['heloasdf', True, "adsf"]]
list可以存储不同类型的数值,也可以嵌套存储


len()函数可以获得List元素的个数

len(list)


可以使用索引来访问list中每一个位置的元素,索引从'0'开始

当索引超出范围时,Python会报一个IndexError错误,最大索引值等于len(list)-1



Python允许使用-1来作为索引值访问最后一个元素,依次类推,可以获取倒数第2个、第3个元素:

list[-1]



list是一个可变的有序表,可以使用append函数向list中追加元素到末尾;

也可以使用insert函数把元素插入到指定的位置:

list.append("hello")list.insert(1, 'nihao')



如果要删除list末尾的元素,

可以使用del运算符:



可以使用pop()函数;

要删除制定位置的元素,可以使用pop(i)函数,其中i为索引值:

list.pop()list.pop(1)



如果想要替换某个元素值,可以直接赋值给对应的索引位置:

list[2]="asdfasdf"



如果一个list中一个元素也没有,即使一个空的list,它的长度为0:

list=[]len(list)


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



extend:可以在列表末尾一次性追加另一个序列中的多个值,和连接操作不同,extend方法是修改了被扩展的序列(调用extend方法的序列)

而原始的连接操作返回的是一个全新的列表



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



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



#################################################################


tuple:Python内置的另一种有序列表,也叫做元组

tuple在很多方面和list相似,唯一的区别就是tuple一旦初始化就不能修改



因为tuple不可变,所以代码更安全。所以能用tuple代替list就尽量使用tuple

tuple不能使用append()、insert()、pop()函数,不过其他获取元素的函数和list是一样的。


不过tuple也有一个漏洞:那就是在tuple定义一个list列表时,可以在这个list列表上使用所有函数



原因:表面上看,tuple的元素确实改变了,但其实变得不是tuple的元素,而是list的元素。tuple从一开始指向的list并没有改成别的list,所以,tuple所谓的不变是说,tuple的每个元素,只想永远不变。即指向'a',就不能改成指向'b';指向一个list,就不能改成指向其他对象,但指向的这个list本身是可以改变的


当tuple要定义单个元素时,不能使用

tuple=(1)

因为括号()既可以表示tuple,又可以表示数学公式中的小括号。因此,Python规定,这种情况下,按小括号计算,结果为1

所以,单个元素的tuple在定义时必须加上一个逗号,

tuple=(1,)



#################################################

需要使用元组的地方

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

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


#########################################################


range:

函数range是经常用到的函数,用于生成连续整数的列表

help(range)


函数功能:返回一个包含整数的算数级数的列表。range(i, j)返回[i, i+1, i+2, ... , j-1], 参数start默认为0。当步长被给予后,它指定了增量或减量。


#指定stoprange(5)#指定start和stoprange(1,5)#指定步长range(1, 20, 2)  #正序排列range(20, 1, -2)  #逆序排列



0 0