Python学习笔记(三)——Python数据结构之序列

来源:互联网 发布:js 计数器 滚动效果 编辑:程序博客网 时间:2024/06/06 12:35
    序列(sequence )是Python中最基本的数据结构,笔者尚且理解为java 数组。其中列表和元组是最常用的序列类型。列表中元素可修改,而元组不能。
一、序列通用操作
   Python提供了针对所有序列通用的内建函数(内建函数就是Python本身含有的,无需引入其他模块方可使用),分别有:索引indexing、分片sliceing、加adding、乘multiplying、检查某个元素是否属于序列、计算序列长度、找出最大、最小元素的内建函数。
1、索引
0为序列第一个元素,-1为最后一位。
2、分片  
    用于截取序列中的某一部分值。根据给出的索引边界,第一个索引元素包含在分片内,第二个则不在返回结果中。
    分片操作就是按照步长逐个遍历序列元素,默认步长为1,如果设置步长大于1,则遍历时会跳过某些元素进行。步长可是不为0 的任意正负数。为负时,表示从右至左提取元素。

3、序列相加
4、乘法
5、判断元素是否存在于序列中 
6、长度 、最大值、最小值
#-*- coding: utf-8 -*-#indexing 输入2006,返回第四位,-1表示最后一位forth=raw_input('Year: ')[3] print forth #6forth=raw_input('Year: ')[-1] print forth #6#sliceing numbers=[0,1,2,3,4,5,6,7,8,9,10,11,12]#以步长为1(默认),依次截取1到第10位元素print numbers[1:10] #[1, 2, 3, 4, 5, 6, 7, 8, 9]#以步长为3,依次截取1到第10位元素print numbers[1:10:3] #[1, 4, 7]#以步长为3,依次截取0到最后一位元素print numbers[::3] #[0, 3, 6, 9, 12]#以步长为3,反着截取0到最后一位元素print numbers[::-3] #[12, 9, 6, 3, 0]sequence0=['max','linxi','lu']#adding 字符串+print numbers+sequence0 #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'max', 'linxi', 'lu']#mulprint numbers*2 #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]sequence1=['3','2']container=[sequence0,sequence1] print container #[['max', 'linxi', 'lu'], ['3', '2']]#len\max\minprint len(numbers)  print max(numbers)print min(numbers)#isExistif 3 in numbers :print 'yes' #yesprint 2 in numbers #Truedatabase=[['max','1'],['linxi','1'],['niaon',1],['li',1]]username= raw_input()pin=raw_input()if [username,pin] in database : print 'Access granted'
二、列表
    列表是序列的一个种类,以上操作均适用于列表,同时因为列表是可变的,所以对于列表常用的操作还有元素赋值、删除、分表赋值、列表方法
1、list函数
list=list('mxz')print listname= list('max')  #报错!
     报错'list' object is not callable
     原因list是一个内建函数,如果使用list作为变量名,就无法调用list函数。
2、分片赋值
   从某位开始替换成**字符
#list函数+分片赋值  将index2开始替换name= list('maxxx')name[2:]=list('Zhong')print name #['m', 'a', 'Z', 'h', 'o', 'n', 'g']#分片赋值  从第一位开始,插入1个name[1:1]=['linxi']print name #['m', 'linxi', 'a', 'Z', 'h', 'o', 'n', 'g']name[1:1]=list('linxi')print name #['m', 'l', 'i', 'n', 'x', 'i', 'linxi', 'a', 'Z', 'h', 'o', 'n', 'g']
3、列表方法
append()
     如同stringbuffer的append,
count()
     判断某元素在列表中出现的次数
extend()
     直接在list后追加,但a.extend(b)返回的是一个新的a列表,而a+b,返回a+b的一个副本,a列表本身并未发生改变。
index()
     找出某元素的索引值
insert()
del()
pop()
    注意不同于print a.insert()方法直接返回None,print a.pop(0)  不会报错,直接返回a.insert(2,‘max’)就直接返回None,因为pop是唯一一个 既能修改列表、又能直接返回元素值的方法,python使用append 方法代替入栈 push, 出栈使用pop。
remove('value')
x.reverse()  123变成321
sort 将列表中的元素按照一定顺序排序,返回一个新的对象
#-*- coding: utf-8 -*-#list函数+分片赋值  将index2开始替换name= list('maxxx')name[2:]=list('Zhong')print name #['m', 'a', 'Z', 'h', 'o', 'n', 'g']#分片赋值  从第一位开始,插入1个name[1:1]=['linxi']print name #['m', 'linxi', 'a', 'Z', 'h', 'o', 'n', 'g']name[1:1]=list('linxi')print name #['m', 'l', 'i', 'n', 'x', 'i', 'linxi', 'a', 'Z', 'h', 'o', 'n', 'g']#append extend 追加 和扩展#append  是添加ylist,而extend是直接把b的元素追加到a后,还是一个单个元素的listx=[1,2,3]y=[2,2]x.append(y)print x #[1, 2, 3, [2, 2]]#countx=[1,1,1,1,1,2]print x.count(1) #5#extenda=[1,2,3]b=[4,5,6]a.extend(b)print a #[1, 2, 3, 4, 5, 6] extend修改了被扩展的序列,print b #[4, 5, 6]a=[1,2,3]b=[4,5,6]a+b #[1, 2, 3, 4, 5, 6] #原始的连接并未被修改,只是返回了a和b连接副本的全新列表。连接操作效率比extend低print a #[1, 2, 3]print b #[4, 5, 6]#indexprint a.index(2) #1 返回a中2的index值#insert,在索引2处添加mam 字符a.insert(2,"mam")print a #[1, 2, 'mam', 3]#出栈 剔除索引为0的元素print a.pop(0) #[1, 2, 'mam', 3]print a #[2, 'mam', 3]a.pop()#默认剔除最后一位print a #[2, 'mam']#sortx=[4,2,3]x.sort()  [2,3,4]
三、元组  不可修改
(1,2,3)  直接创建了一个元组
(1,)当只有一个元素时,必须加,
tuple :list转成元组
x=[1,23,2]x.insert(2,'max')tuple(x)  #list转成元组print x

四、总结

针对元素值

lst.append(‘value’)

 

lst.count(‘value’)

 

lst.extend(‘value’)

 

lst.index(‘value’)

 

lst.insert(index,value)

 

lst..remove(value)

 

针对索引

x[1]=2

把索引1处值赋为2

del names[2]

删除names列表索引2处值

name[2:]=list(‘max’)

name索引2处替换成max

x.pop(index)

 

无参数

x.sort()

 

x.reverse()

 








0 0
原创粉丝点击