Python学习笔记--list与tuple
1.使用[ ]将list的所有元素都括起来,就是一个list对象
>>> l=['Liu',18,True]
>>> print l
['Liu', 18, True]
python是动态语言,所以list里可以放不同类型的数据
2.一个元素也没有的list,就是空list
>>> j = []
>>> type(j)
>>> print j
[]
3.根据下标访问list
>>> print l
['Liu', 18, True]
>>> l[0]
'Liu'
4.倒序访问
>>> print l
['Liu', 18, True]
>>> l[-1]
True
>>> l[-2]
18
>>> l[-3]
'Liu'
倒序下标从-1开始
5.添加元素
方法一:append()
>>> print l
['Liu', 18, True]
>>> l.append('Wen')
>>> print l
['Liu', 18, True, 'Wen']
方法二:insert()
>>> print l
['Liu', 18, True, 'Wen']
>>> l.insert(1,'insert')
>>> print l
['Liu', 'insert', 18, True, 'Wen']
第一种为末尾插入,第二种为任意位置插入,比第一种方法灵活。
6.删除元素
方法:pop()
返回:被删除的元素
(1)情况一(带下标):
>>> print l
['Liu', 'insert', 18, True, 'Wen']
>>> l.pop(3)
True
>>> print l
['Liu', 'insert', 18, 'Wen']
(2)情况二(不带下标):
>>> print l
['Liu', 'insert', 18, 'Wen']
>>> l.pop()
'Wen'
>>> print l
['Liu', 'insert', 18]
不带下标的pop方法,默认删除最后一个元素。
7.替换元素
>>> print l
['Liu', 'insert', 18]
>>> l[-1]=19
>>> print l
['Liu', 'insert', 19]
8.特殊的有序list—tuple(元组)
(1)使用( )将元素括起来
(2)一旦创建完毕,就无法修改。
所以tuple没有append()、insert()和pop()
(3)通过下标索引元素,但是不能再赋值为别的元素
(4)包含 0 个元素的 tuple,也就是空tuple,直接用 ()
包含1个元素的 tuple时不能按照如下的方法创建:
>>> t = (1)
>>> print t
1
>>> type(t)
<type 'int'>
分析:
因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
解决:
Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
>>> t = (1,)
>>> print t
(1,)
>>> type(t)
<type 'tuple'>
9.'可变'的tuple
例子:
>>> t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])
不是说tuple一旦定义后就不能改变了吗?怎么现在又可以改变了呢?
分析:
当我们定义tuple的时候:
Python学习笔记--list与tuple当我们把list的元素’A’和’B’修改为’X’和’Y’后,tuple变为:
图片2
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
10.切片
格式:list[x:y:z]
解析:
x表示切片开始的位置
y表示切片到哪里结束
z表示切片间隔数
负数用在从序列尾开始计算的位置
切片的操作类型:
con[start_index]:返回索引值为start_index的对象。start_index为 -len(con)到len(con)-1之间任意整数。
con[start_index: end_index]:返回索引值为start_index到end_index-1之间的连续对象。
con[start_index: end_index : step]:返回索引值为start_index到end_index-1之间,并且索引值与start_index之差可以被step整除的连续对象。
con[start_index: ]:缺省end_index,表示从start_index开始到序列中最后一个对象。
con[: end_index]:缺省start_index,表示从序列中第一个对象到end_index-1之间的片段。
con[:]:缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段。
con[::step]:缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值。
举例:
str[6:] #截取第七个字符到结尾
str[:] #截取字符串的全部字符
str[0:3] #截取第一位到第三位的字符
str[:-3] #截取从头开始到倒数第三个字符之前
str[2] #截取第三个字符
str[-1] #截取倒数第一个字符
str[::-1] #创造一个与原字符串顺序相反的字符串
str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
str[-3:] #截取倒数第三位到结
str[:-5:-3] #逆序截取