python学习笔记:数据结构


python数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或字符,甚至可以是其他数据结构。
在python中,最基本的数据结构是序列(sequence)。
序列中的每个元素被分配一个序号---即元素的位置,也被为索引。
序列概述
python包含6种内建的序列
例:
[python]  
edward = ['Edward Gumby',42]  
 
索引
序列中的所有元素都是有编号的----从0开始递增。
[python]  
greeting = 'hello'  
greeting[0]  
输出:  
h  
 
分片
与使用索引来访问呢单个元素类似,可以使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现:
[python]  
tag = '<a href="http://www.python.org">Python web sit</a>'  
tag[9:30]  
tag[32:-4]  
基本的列表操作
1、改变列表:元素赋值
[python] 
x = [1,1,1]  
x[1] = 2  
x  
输出:[1,2,1]  
 
2、删除元素
[python]  
names = ['Alice','Beth','Cecil','Dee-Dee']  
del names[2]  
names  
输出:['Alice','Beth','Dee-Dee']  
 
3、分片赋值
[python]  
name = list('Perl')  
name  
name[2:] = list('ar')  
name  
输出:['P','e','a','r']  
分片赋值语句可以在不需要替换任何原有元素的情况下插入新的元素
[python]  
numbers = [1,5]  
numbers[1:1] = [2,3,4]  
numbers  
输出:[1,2,3,4,5]  
 
列表方法
方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象。一般来说,方法可以这样进行调用:
对象.方法(参数)
除了对象被放置到方法名之前,并且两者之间用一个点号隔开,方法调用与函数调用很类似。
1、append追加新的对象
append方法用于在列表末尾追加新的对象:
[python]  
lst = [1,2,3]  
lst.append(4)  
lst  
输出:[1,2,3,4]  
 
2、count统计某个元素次数
count方法统计某个元素在列表中出现的次数
[python]  
['to' 'be' 'or' 'not' 'to' 'be'].count('to')  
 
3、extend列表末尾一次性追加
extend方法可以在列表的末尾一次性追加另一个序列中的多个值。(可以用新列表扩展原有的列表)
[python]  
a = [1,2,3]  
b = [4,5,6]  
a.extend(b)  
a  
输出:[1,2,3,4,5,6]  
 
使用分片赋值来实现相同的结果:
[python]  
a = [1,2,3]  
b = [4,5,6]  
a[len(a):] = b  
a  
输出结果一样  
 
4、index索引位置
index方法用于列表中找出某个值第一个匹配项的索引位置
[python]  
knights = ['We','are','the','knights','who','say','ni']  
knights.index('who')  
5、insert插入
insert方法用于将对象插入列表中
[python]  
numbers = [1,2,3,4,5,6,7]  
numbers.insert(3,'four')  
输出:  
[1,2,3,'four',5,6,7]  
与extend方法一样,insert方法的操作也可以用分片赋值来实现
6、pop移除
pop方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值
[python]  
x = [1,2,3]  
x.pop()  
3  
x  
[1,2]  
 
7、remove移除
remove方法用于移除列表中某个值的第一个匹配项
[python]  
x = ['to','be','or','not','to','be']  
x.remove('be')  
 
8、reverse反向
reverse方法将列表中的元素反向存放
 
9、sort排序
sort方法用于在原位置对列表进行排序。在“原位置排序”意味着改变原列表的列表,从而让其中的元素能按一定的顺序排序,而不是简单地返回一个已排序的列表副本
[python]  
x = [4,6,2,1,7,9]  
x.sort()  
x  
输出:  
[1,2,4,6,7,9]  
 
=====================
[python]  
x = [4,6,2,1,7,9]  
y = x[:]  
y.sort()  
y  
输出和上面结果一样  
 
再次调用x[:]得到的是包含了X所有元素的分片
=====================
另一种获取已排序的列表副本的方法是,使用sorted函数
[python] 
x = [4,6,,2,1,7,9]  
y = sorted(x.)  
 
10、高级排序
如果希望元素能够按照特定的方式进行排序(而不是sort函数默认的方式,即根据python的默认排序规则按升序排列元素),那么可以通过compare(x,y)的形式自定义比较函数。
compare(x,y)函数会在 x<y时返回负数,在x>y时返回正数,如果x=y则返回0。定义好函数之后,就可以提供给sort方法作为参数了。
内建函数cmp提供了比较函数的默认实现方式:
[python]  
cmp(42,32)  
输出:1  
cmp(99,100)  
输出:-1  
cmp(10,10)  
输出:0  
numbers = [5,2,9,7]  
numbers.sort(cmp)  
numbers  
[2,5,7,9]  
 
sort方法有另外两个可选的参数 --  key 和 reverse。 如果要使用它们,那么久要通过名字来指定
[python]  
x = ['aardvark','abalone','acme','add','aerate']  
x.sort(key=len)  
x  
输出:  
['add','acme','aerate','abalone','aardvark']  
 
另一个关键字参数reverse是简单的布尔值(True或者是False)用来指明列表是否需要进行反向排序
[python] 
x = [4,6,2,1,7,9]  
x.sort(reverse=True)  
x  
输出:  
[9,7,6,4,2,1]  
 
cmp,key,reverse参数都是可以用于sorted函数。在多数情况下,为cmp或key提供自定义函数是非常有用的
元组:不可变序列
元组与列表一样,也是一种序列。唯一的不同是元组不能修改。
创建元组的语法很简单:如果你用逗号分隔了一些值,那么你就自动创建了元组。
[python]  
1,2,3  
(1,2,3)  
 
元组也是通过圆括号括起来的:
[python]  
(1,2,3)  
 
空元组可以用没有包含内容的两个圆括号来表示:
[python]  
()  
 
那么如何实现包括一个值的元组呢。实现方法---必须价格逗号,即使只有一个值
[python]  
42,  
 
[python] 
3*(40+2,)  
输出:  
(42,42,42)  
1、tuple函数
tuple函数的功能与list函数基本上是一样的:以一个序列作为参考并把它转换为元组。如果参数是元组,那么该参数就会被原样返回
[python] 
tuple([1,2,3])  
输出:(1,2,3)  
tuple('abc')  
输出:('a','b','c')  
tuple((1,2,3))  
输出:(1,2,3)  
 
 
新函数
cmp(x,y) 比较两个值
len(seq) 返回序列的长度
list(seq) 把序列转换成列表
max(args) 返回序列或者参数集合中的最大值
min(args) 返回序列或者参数集合中的最小值
reversed(seq) 对序列进行反向迭代
sorted(seq) 返回已排序的包含seq所有元素的列表
tuple(seq) 把序列转换成元组

相关内容

    暂无相关文章

评论关闭