python学习笔记列表和元组

python中最基本的数据结构:sequence ,六种内建序列:列表 元组 字符串 Unicode字符串 buffer对象 xrange对象
列表和元组的区别在于,列表可以修改,元组不可以,列表大部分情况下可以替代元组,除了使用元组作为字典的键,因为键不能修改,所以不能使用列表
用序列存储一个人的信息

>>>edward=['Edward Gumby',42]
>>>john=['John Smith',50]
>>>database=[edward,john]
>>>database
[['Edward Gumby',42],['John Smith',50]]

        容器

1 序列---2 映射(字典)----3 集合(set):既不是序列也不是映射的容器类型
序列每个元素都有自己的编号,映射每个元素都有自己的名字(键)

---------通用的序列操作-----------

1 索引 indexing
>>>greeting[-1]
'g'
>>>fourth=raw_input('Year:')[3]
Year:2005
>>>fourth
'5'

2 分片 sliceing
访问一定范围内的元素
>>>tag='<a href="http://www.python.org">Python web site</a>'
>>>tag[9:30]
'http://www.python.org'
>>>tag[32:-4]
'python web site'
注意取的范围是 [m:n)

>>>numbers=[1,2,3,4,5,6,7,8,9,10]
>>>numbers[7:10]
[8,9,10]
现在,索引10指向第11个元素,这个元素不存在其实
>>>numbers[-3:0]
>>>[] 空序列
>>>numbers[-3:] ------捷径
[8,9,10]
>>>numbers[:3]
[1,2,3]
注意这是复制
>>>numbers[:]
[1,2,3,4,5,6,7,8,9,10]
 

步长(step length)
>>>numbers[0:10:-2]
[1,3,5,7,9]
>>>numbers[8:3:-1]
[9,8,7,6,5] --------------------[8:3)依然奏效

序列相加
>>>[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
>>>[1,2,3]+'world' ---ERR
结论:两种相同类型的序列才能进行连接操作

乘法
>>>'python'*5
'pythonpythonpythonpythonpython' -----字符串也是序列
None
>>>sequence=[None]*10--------初始化一个长度为10的列表
>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]

再看看list的操作:
?
array = [1, 2, 5, 3, 6, 8, 4]
#其实这里的顺序标识是
[1, 2, 5, 3, 6, 8, 4]
(0123456)
(-7,-6,-5,-4,-3,-2,-1)
 
>>> array[0:] #列出0以后的
[1, 2, 5, 3, 6, 8, 4]
>>> array[1:] #列出1以后的
[2, 5, 3, 6, 8, 4]
>>> array[:-1] #列出-1之前的
[1, 2, 5, 3, 6, 8]
>>> array[3:-3] #列出3到-3之间的
[3]

 

那么两个[::]会是什么那?
?
>>> array[::2]
[1, 5, 6, 4]
>>> array[2::]
[5, 3, 6, 8, 4]
>>> array[::3]
[1, 3, 4]
>>> array[::4]
[1, 6]
如果想让他们颠倒形成reverse函数的效果
>>> array[::-1]
[4, 8, 6, 3, 5, 2, 1]
>>> array[::-2]
[4, 6, 5, 1]



原文地址:https://www.cnblogs.com/i80386/p/2238202.html