参考:
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在定义时必须加上一个逗号,
tuple=(1,)
#################################################
需要使用元组的地方
1.元组可以在映射(和集合的成员)中作为键(key)使用,而列表不行
2.元组作为很多内建函数和方法的返回值存在
#########################################################
range:
函数range是经常用到的函数,用于生成连续整数的列表
help(range)
函数功能:返回一个包含整数的算数级数的列表。range(i, j)返回[i, i+1, i+2, ... , j-1], 参数start默认为0。当步长被给予后,它指定了增量或减量。
#指定stop range(5) #指定start和stop range(1,5) #指定步长 range(1, 20, 2) #正序排列 range(20, 1, -2) #逆序排列