Python包含六种内建的序列,其中最常用的两种类型就是列表和元组。
列表和元组的最大区别就是:列表可以修改(使用[ , ,]表示),元组不可以修改(使用(,,)表示)。
对列表可以进行一系列的操作:索引,分片,步长,列表相加,相乘,插入,删除,判断成员资格等,以及一些取长度、最大值、最小值的内建函数。
对元组可以进行的操作有创建和访问元组中的元素,还可以将列表转换成元组。
列表中最重要的操作就是分片了,希望你看完以下的程序之后会对分片操作有详细的了解,可以尝试自己猜下得到的结果,如果都猜对了,说明你对分片和步长有了深入的掌握啦。示例程序中还有for和if等语句,相信你看了之后也会了解他们和传统编程语言的不同之处。注:Python使用缩进代替{ }来划分逻辑块。
下面对列表的一些基本操作举例说明:
附上程序下载链接: 下载链接# -*- coding: GBK -*- #首先用于确定编码,加上这句 print "~~~~~~~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #Python包含六种内建序列,列表和元组是其中两个,二者主要区别为:列表可修改,元组不可修改 #序列之中还可以包含其他序列,序列中的各个元素通过逗号分隔 zhenyu = ['LiZhenyu',23,'ChangZhou','Work'] junwen = ['ChenJunwen',22,'HaErbin','Study'] database = [zhenyu,junwen] print database print "~~~~~~~~~~~~~~~~~~~~~~~~~~2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #通用的序列操作之索引:字符串就是一个由字符组成的序列,还可以直接获取输入字符串的索引 #索引时,第一个是0,第二个是1,最后一个是-1,倒数第二个是-2,以此类推 print 'zhenyu'[0] + 'zhenyu'[-1] fourth = raw_input('Your Name:')[0] print fourth #将输入的日期转换成英语格式 ending = ['st','nd','rd'] + 17*['th']\ + ['st','nd','rd'] + 7*['th']\ + ['st'] day = int(raw_input('Day(1-31):')) if day >= 1 and day <= 31 : print str(day) + ending[day-1] print "~~~~~~~~~~~~~~~~~~~~~~~~~~3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #分片,用来访问索引在一定范围内的元素,注:前含后不含,num[m:n]从索引m开始,到索引n结束(含m,不含n) #前边的数不写就是从第一个索引开始,后边的数不写就是到最后一个索引结束(含最后一个,[-3:]就是最后三个,[:4]就是前4个) zhenyu = 'LiZhenYu' print zhenyu[:] print zhenyu[:2] print zhenyu[2:6] print zhenyu[-2:] print "~~~~~~~~~~~~~~~~~~~~~~~~~~4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #步长,[m:n:step],step不能为0,为正数时m
n(从右向左取元素),默认step为1(2和3之间有一个步长) #能把下面的情况都口算正确,就说明步长和分片理解正确了,不要忘了:前含后不含 number = [1,2,3,4,5,6,7,8,9,10] print number[0:10:1] print number[0:10:2] print number[3:6:3] print number[::4] print number[8:3:-1] print number[10:0:-2] print number[0:10:-2] print number[::-2] print number[5::-2] print number[:5:-2] print "~~~~~~~~~~~~~~~~~~~~~~~~~~5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #序列的相加和相乘,字符串的相加就属于序列的相加,注:两种相同类型的序列才能相加(String和都是int元素的序列不可相加) print [1,2,3] + [5,6,7] print 'Python ' * 5 print [1,2] * 5 #使用None初始化长度为5的列表 print [None] * 5 print "~~~~~~~~~~~~~~~~~~~~~~~~~~6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #成员资格,检查一个值是否在序列中,可以使用in运算符,也可用于检查字符串是否包含子串,用于检查用户权限和过滤邮件等 #输入用户名和密码,判断数据库中是否存在该用户,连续输错四次进行提示并退出 database = [ ['teacher','123'], ['zhenyu','521'], ['jielun','zhou'], ['student','study'] ] words = [1,2,3,4] for word in words: user = raw_input('Please enter your user name:') password = raw_input('Enter your password now:') if([user,password] in database): print 'Welcome!My '+ user break else: print 'Sorry, cannot in!' if word == 4: print 'Sorry,you have enter wrong four times!' print "~~~~~~~~~~~~~~~~~~~~~~~~~~7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #序列长度(len),最大值(max),最小值(min) print min([4,323,443,5563,-2]) print max([4,323,443,5563,-2]) print len([4,323,443,5563,-2]) print "~~~~~~~~~~~~~~~~~~~~~~~~~~8~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #List列表(创建字符串列表),使用list将字符串转化成字符列表 print list('LiZhenyu') #字符串列表转化为字符串,使用''.join(list) print ''.join(['Zhenyu ','Is ','My ','Favorite ','Boy']) #列表中元素赋值 classes = ['math','English','Chinese','French','Science'] classes[3] = 'What?' print classes #删除列表中的元素 del classes[2] print classes #分片赋值,前含后不含,liebiao[m:n] = list[] name = list('Perl') name[2:] = ['2','3','3'] name[2:] = list('ar') print name #在指定的位置进行插入操作,插入一个列表,在m处插入一个列表number[m:m] = list number = [1,5] number[1:1] = [2,3,4] print number #通过分片来删除元素,即使用空列表元素代替元素,含1不含4 number[1:4] = [] print number print "~~~~~~~~~~~~~~~~~~~~~~~~~~9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #列表方法 #append方法,在列表末尾添加新的元素 name = [1,2,3,4] name.append(6) print name #count方法统计某个元素在列表中出现的次数 print list('My English is not very good,but I speak a lot.').count('o') #extend方法在列表末尾追加一个列表中的值,效率比a=a+b要高,或者可以表达成:a[len(a):] = b a = list('This is my ') b = list('favorite language!') a.extend(b) print ''.join(a) #index方法用于从列表中找出某个值第一个匹配项的位置(从0开始),当值找不到时会报异常 num = list('The world is flat.') print num.index('w') #insert方法用于将元素插入到指定的位置 num.insert(0,'What ') print ''.join(num) #pop方法会移出列表中的元素(默认是最后一个),并且返回该元素的值 print num.pop(15) print ''.join(num) #remove方法用于移除列表中某个值的第一个匹配项 num.remove('i') print ''.join(num) #reverse方法将列表中的元素反向存放 x = [1,2,3,4,5] x.reverse() print x #sort方法用于对原列表进行排序,注:无返回值,所以不能进行赋值操作 num.sort() print ''.join(num) #列表的复制,需要注意,不能使用=进行复制,如y=x(指向同一地址,一起改变),可以使用分片进行复制,y=x[:] x = [1,4,6,8,2,6,9,3] y = x[:] z = x y.sort() z.append(100) print x,y,z print "~~~~~~~~~~~~~~~~~~~~~~~~~~10~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #元组,注意:元组是不可改变的,元组是用圆括号括起来的(也可以没有括号),只有一个值的元组也要加逗号 print 1,2,3 print () print (1,) #tuple用户将列表装换成元组,变成不可改变的 print tuple(list('The world is flat.')) print "~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" #为了避免双击的时候直接一闪退出,在最后面加了这么一句 raw_input("Press To Quit!")