#列表和元组 p44 10:40am-12:25
1.序列概述
序列(包含列表 元组等)
列表可以修改 元组不能
一般来说 列表可以代替元组
>>>edward=['Edward',42]
元素用逗号隔开
序列也可以包含其他序列
>>>edward=['Edward',42]
>>>jhon=['jhon',50]
>>>database=[edward,jhon]
>>>database
[['Edward', 42], ['jhon', 50]]
2.通用序列操作
索引 从0开始递增
>>>t="hello"
>>>t[0]
'h'
>>>t="hello"
>>>t[-1]
'o'
>>> 'hello'[1]
'e'
分片 根据索引 取一段
>>> t='<a href="http:www.baidu.com">'
>>> t[9:27]
'http:www.baidu.com'
>>> t[9:-1]
'http:www.baidu.com"'
>>> number=[1,2,3,4,5]
>>> number[2:4]
[3, 4]
>>> number[4:-3]
[]
#如果左边的索引比右边出现的晚 就会为空
url=raw_input('please enter the url:');
domain=url[11:-4];
print "domain name: "+domain
please enter the url:http://www.baidu.com
domain name:baidu
如果分片步长(间隔)比较大的时候 怎么办呢
>>> number=raw_input("输入:").split(",")
输入:1,2,3,4,5,6,7,8,9
>>> print number;
['1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> print number[0:8]
['1', '2', '3', '4', '5', '6', '7', '8']
从0开始8个数
>>> print number[0:8:2]
['1', '3', '5', '7']
从0开始8个数中 步长为2
>>> print number[::4]
['1', '5', '9']
所有的数中 步长为4
>>> print number[0:8:-1]
[]
>>> print number[8:0:-1]
['9', '8', '7', '6', '5', '4', '3', '2']
从大到小 逆序排列
序列相加
>>> [1,2]+[3,4]
[1, 2, 3, 4]
序列可以与序列相加
字符串可以跟字符串相加
序列与字符串无法相加
乘法
>>> 'python'*5
'pythonpythonpythonpythonpython'
>>> [1,2]*5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
字符串 序列都可相乘
初始化一个长度为10的空序列
>>> sequence=[None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]
成员资格 检查某值是否在序列中
>>> permissions='rw'
>>> 'w' in permissions
True
in 字符串也可以检查
>>> 'P' in 'Python'
True
>>> 'x' in 'Python'
False
长度 最小值和最大值
>>> n=[100,90,60,75]
>>> len(n)
4
>>> max(n)
100
>>> min(n)
60
3.列表:Python的“苦力”
列表可变的
列表赋值
x=[1,1,1]
x[1]=2
[1,2,1]
如果位置不存在 则无法赋值
x[100]=100 错误的
删除元素
x=[1,2,1]
del x[1]
[1,1] 2被彻底删除 长度也从3 变为2
分片赋值
>>> name=list('perl')
>>> name
['p', 'e', 'r', 'l']
>>> name[2:]=list('ar')
>>> name
['p', 'e', 'a', 'r']
>>> name[1:]=list('ython')
>>> name
['p', 'y', 't', 'h', 'o', 'n']
可以替换 插入 长度不一样 也可以替换
n=[1,5]
n[1,1]=[2,3,4]
n
[1,2,3,4,5]
相当于“替换”了一个空白的分片 也可以用来删除分片
n=[1,2,3,4,5]
n[1,4]=[]
n
[1,5]
列表方法
apend 末尾追加新对象
>>> t=[1,2]
>>> t.append(4)
>>> t
[1, 2, 4]
count 统计某元素在列表出现的次数
>>> ['to','be','or','not','to','be'].count('to')
2
次数为2
extend可以在末尾一次性追加多个值
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
区别于连接操作 a 不会变化
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
a.extend(b)等同于a=a+b但是效率比赋值高
index方法用于从列表中找出某个值第一个匹配的索引位置
>>> k=['who','are','we']
>>> k.index('we')
2
insert方法用于将对象插入到列表中:
>>> n=[1,2,3,4]
>>> n.insert(3,'four')
>>> n
[1, 2, 3, 'four', 4]
pop方法会移除列表中的最后一个元素 并返回该元素的值
>>> x=[1,2,3]
>>> x.pop()移除的是最后一个
3
>>> x.pop(0) 移除的是第一个
1
>>> x
[2] 最后的值
romove方法用于移除列表中某个值的第一个匹配项
>>> x=['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
reverse将列表中的元素反向存放
>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
sort用于在原位置对列表进行排序 改变原来的排序
>>> x=[4,6,1,2,0]
>>> x.sort()
>>> x
[0, 1, 2, 4, 6]
如果需要未改变和改变顺序的列表怎么办呢
x=[4,5,0,8,2,1]
y=x.sort()#错误
print y
none
以上方法错误 以下方法可行
>>> x=[4,6,1,2,0]
>>> y=x[:]#如果只是y=x也不可以 这个表示 x y指向同一个列表;了
>>> y.sort()
>>> x
[4, 6, 1, 2, 0]
>>> y
[0, 1, 2, 4, 6]
将排序后的值赋给y 这个方法也很好
>>> x=[4,6,1,2,0]
>>> y=sorted(x)
>>> x
[4, 6, 1, 2, 0]
>>> y
[0, 1, 2, 4, 6]
>>> sorted("python")
sorted为一个函数 返回一个列表
['h', 'n', 'o', 'p', 't', 'y']
4.元组:不可变序列
用逗号分隔的一些值 就自动创建了元组 元组是通过()表示
>>> 1,2,3
(1, 2, 3)
空元组 ()
一个值得元组(1,)要加一个逗号
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
(42)=42但是(42,)!=42
基本元组操作 创建和访问 不可编辑
x=1,2,3
x[1]
2
x[0:2]
(1,2)