[python]学习笔记,第二章列表和元素
在Python中最基本的数据结构就是序列
一、其中最为常用的是列表和元组。
1.首先看序列,建立一个序列,以及序列间的嵌套
>>> edward=['ni hao',43] >>> john=['ni ye hao',42] >>> database=[edward,john] >>> database [['ni hao', 43], ['ni ye hao', 42]] >>> john ['ni ye hao', 42]
2.索引,类似数组的访问a[1];
3.序列的分片以及乘除操作
>>> tag='<a href="www.baidu.com">baidu</a>' >>> tag[2:1] '' >>> tag[4:5] 'r' >>> tag[4:11] 'ref="ww' >>> tag+'helloworld' '<a href="www.baidu.com">baidu</a>helloworld' >>> tag*2 '<a href="www.baidu.com">baidu</a><a href="www.baidu.com">baidu</a>' >>> [11]*11 [11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]
4.成员资格,in操作符
>>> 'w' in tag
True
5.长度,最大和最小
>>> number=[100,1,290] >>> max(number) 290 >>> min(number) 1 >>> len(number) 3 >>>
二、列表,Python的苦力
列表是可变的,可以改变列表的内容。
list方法
append方法:用于在列表末尾追加新的对象,append方法与其他方法类似,只是在恰当的位置修改列表,也就是说不是创建了一个新列表而是在原有列表上进行修改。
count方法,统计某个元素在列表中出现的次数。
extend 方法,在列表的末尾一次性追加另一个序列的多个值,换句话说,可以用新列表扩展原有的列表。比较类似连接操作,区别在与extend方法修改的原有序列,而+则返回的是一个新序列,当然也可以用分片赋值的方法来实现相同的结果。
index 方法,从列表中找出某个值第一个匹配项的索引位置
insert方法,将对象插入列表中
pop 方法,移除列表中的一个元素,并返回该元素的值。类似数据结构的出栈操作。注意pop方法有返回值。
remove 方法,用于移除列表中某个值的第一个匹配项,和index方法相反。 注意是第一个匹配项,如果有多个则只移除第一个。
reverse方法,将列表中的元素反向存放。颠倒的意思。
sort 方法,用于再原位置对列表进行排序,这意味着改变原来的列表,让其中的元素按一定的顺序排序,并不是简单的返回一个列表的副本。也就是说不能通过sort函数返回一个和原序列占同样内存的副本并显示出来。
>>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua'] >>> name.append("nihao") >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao'] >>> names=name.append("shsh") >>> names#此处不会赋值成功显然append并不是返回一个对象 >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh'] >>> name.count('shsh') 1 >>> name.append('wangwu') >>> name.count('wangwu') 2 >>> sex=['man'] >>> name.extend(sex) >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man'] >>> name+sex ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man'] >>> newname=name+sex >>> newname ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man']#利用连接也能达到extend的功能 >>> name[len(name):]=sex >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man', 'man'] >>> del name[len(name)]#此处报错是因为超出了序列的长度 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range >>> len(name) 9 >>> del name[8] >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu', 'man'] >>> del name[len(name)-1] >>> name ['wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu'] >>> name.index('lisi') 2 >>> name[2] 'lisi' >>> name.insert(0,'nihao') >>> name ['nihao', 'wangwu', 'zhangsan', 'lisi', 'xioahua', 'nihao', 'shsh', 'wangwu'] >>> name.pop() 'wangwu' >>> name.pop(3) 'lisi' >>> name ['nihao', 'wangwu', 'zhangsan', 'xioahua', 'nihao', 'shsh'] >>> name.pop(0) 'nihao' >>> name.append(name.pop()) >>> name ['wangwu', 'zhangsan', 'xioahua', 'nihao', 'shsh'] >>> name.insert(3,'wangwu') >>> name ['wangwu', 'zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh'] >>> name.remove('wangwu') >>> name ['zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh'] >>> name.reverse#忘记加括号了 <built-in method reverse of list object at 0xb74e288c> >>> name ['zhangsan', 'xioahua', 'wangwu', 'nihao', 'shsh'] >>> x=[1,2,3,4,5,6] >>> x [1, 2, 3, 4, 5, 6] >>> x.reverse() >>> x [6, 5, 4, 3, 2, 1] >>> name.reverse() >>> name ['shsh', 'nihao', 'wangwu', 'xioahua', 'zhangsan'] >>> name.sort() >>> name ['nihao', 'shsh', 'wangwu', 'xioahua', 'zhangsan']>>> x=[2,5,1,9,5,4,0,8] >>> x.sort() >>> x [0, 1, 2, 4, 5, 5, 8, 9] >>> y=x.sort() >>> y >>> x=[2,5,1,9,5,4,0,8] >>> y=x[:] >>> y.sort() >>> x [2, 5, 1, 9, 5, 4, 0, 8] >>> y [0, 1, 2, 4, 5, 5, 8, 9]
cmp方法,cmp(x,y),如果大于则返回1,小于返回-1,等会返回0。
reverse关键字的使用,比如x.sort(reverse=ture)则表示反向排序。
3.元组
元组和列表差不多,但区别在于元组不可更改,元组的创建很简单,仅用“,”分割就可以。比如
>>>1,2,3
(1,2,3) 就创建了元组。元组一般用圆括号表示。
tuple函数,将序列转换成元组。tuple([1,2,3])
尽管看起来序列更好用,元组的限制太多。但元组也有重要的作用
元组可以在映射中当做键使用,而列表则不行
元组可以作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理。(当然此处我们还用不到这些)