您的位置:首页 > 编程语言 > Python开发

Python基础学习教程(二)之序列的宝藏

2013-10-26 13:54 399 查看
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,为负数时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 <Enter> To Quit!")



附上程序下载链接:下载链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: