Python 列表和元组

Python中,列表和元组是一种数据结构:序列,序列中的每个元素都被分配一个序号,元素的位置,第一原元素的位置为0,因此类推。序列是最基本的数据结构,列表和元组他们之间具有一定的区别,即列表可以修改,而元组则不能修改!如果要添加元素最好是用列表。
    一、索引
    序列中是所有元素都有编号的,从零开始。这些元素可以通过编号进行访问,这就是索引。
# -*- coding: cp936 -*-
#根据给定的年月日以数字形式打印出日期
months=[
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December'
    ]
#以1~31的数字作为结尾的类表
endings=['st','nd','rd']+17*['th']\
         +['st','nd','rd']+7*['th']\
         +['st']
year=raw_input('Year:')
Month=raw_input('Month(1-12):')
day=raw_input('Day(1-31):')
 
Month_number=int(Month)
day_number=int(day)
 
#记得要将月份和天数减1,以获取正确的索引
Month_name=months[Month_number-1]
ordinal=day+endings[day_number-1]
 
print endings
print Month_name +''+ordinal +','+year
上面是索引示例。充分利用索引。根据给定的年月日输出年月日。通过输入年,月,日即可将输出结果进行输出,如:2012-9-11.
    二、分片
    分片主要访问一个范围内的元素,分片的实现方式:两个索引冒号相隔实现分片,注意:分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内,而第二个索引元素则不包含在分片内。
tag='http://www.python.org">python web site'
tag[9:10]
结果:'http://www.python.org'
若要访问最后一个元素,则需要最后的边界如:
tag[9:] 结果:'http://www.python.org">python web site'
tag[0:-1] 结果:'python web site
另外分片中可以有步长这个概念:序列名[开始索引号:结束索引号:步长]
如:Numbers=[1,2,3,4,5,6,7,8,9,10]
       Numbers[0:10:2] 结果:[1,3,5,7,9]
#在盒子中打印一个句子
sentence=raw_input("Sentence:")
screen_width=80
text_width=len(sentence)
box_width=text_width+6
left_margin=(screen_width-box_width)//2
print
print ' '*left_margin + '+' + '-'*(box_width-2)+'+'
print ' '*left_margin + '|' + ' '*text_width   +'|'
print ' '*left_margin + '|' +     sentence     +'|'
print ' '*left_margin + '|' + ' '*text_width   +'|'
print ' '*left_margin + '+' + '-'*(box_width-2)+'+'
print
#请输入he is a very naughty boy!
 可以通过In函数判断其部分的资格,配合条件判断语句(if)即可,如下:
#充分运用in函数
database=[
    ['Miller','1234'],
    ['smith','4242'],
    ['jones','9843'],
    ['dilbert','7524']
    ]
username=raw_input('User name:')
pin=raw_input('Pin code:')
if [username,pin] in database:print 'SQL sever sucees'
三、列表
    列表是可变的,可以改变列表的内容。首先介绍list函数:list函数适用于所有类型的序列,而不只是字符串,可以将一个不可编辑的字符串变为列表,如:list(‘hello’),得到结果为:['h','e' ,'l' ,'l' ,'0' ] ,对序列的操作可以说修改,删除和插入新值。
    列表的创建
    1、直接输入值得方式,如A=[1,2,3,4]
    2、采用range的方式,如:range(start,stop,step)
    3 、相同或者有规律的列表:x=['a','b'],number*x
    4、 A=[number for i in range(1,N+1)],其中变换number和N
      对象.方法(参数)  
       (1)append,用于在列表末尾追加新的对象
                >>> number=[1,2,3]
                >>> number.append(5)
                >>> number
        (2)count,统计处某个元素在列表中出现次数
                    number=[1, 2, 3, 5, 'A', 'A']
                    number.count('A')
         (3)extend,在列表的末尾一次性追加另一个序列中的多个值。
                    >>> a=[1,2,3]
                    >>> b=[3,4,5]
                    >>> a.extend(b)
                    >>> a
                    [1, 2, 3, 3, 4, 5]
           (4)index,用于从列表中找出某个值第一个匹配项的索引位置
                    >>> Knights=['we','are','the','Knights','who','say','ni']
                    >>> Knights.index('who')
                    4
                    >>> Knights[4]
                    'who'
 
            (5)insert,将对象插入到列表中(P56)
                    >>> number
                    [1, 2, 3, 5, 'A', 'A']
                    >>> number.insert(4,'six')
                    >>> number
                    [1, 2, 3, 5, 'six', 'A', 'A']
             (6)pop,移除列表中的一个元素:pop是唯一个既能修改列表又返回元素之的类表方法。
                    >> X=[1,2,4,6]
                    >>> X.pop(1)
                    2
                    >>> X
                    [1, 4, 6]
                    使用POP方法可以实现栈的数据结构,入栈(push)和出栈(pop)。Python中没有入栈方法,但是可以通  过append代替,pop实现出栈。
                    >>> X=[1,4,0]
                    >>> X.append(X.pop())
                    >>> X
                    [1, 4, 0]
             (7)reverse,将列表中的元素方向存放
                    list(reversed(X))
                    [0, 4, 1]
                    如果需要对一个序列进行反向迭代,那么可以使用reversed函数。这个函数不返回一个类表,而是返回一个迭代器对象。但是可以采用list函数将返回的对象转化成列表。
               (8)sort,对列表进行排序
                    >>> Y=[2,4,0,9,5,3,8,1]
                    >>> X=Y[:]
                    >>> X.sort()
                    >>> Y
                    [2, 4, 0, 9, 5, 3, 8, 1]
                    >>> X
                    [0, 1, 2, 3, 4, 5, 8, 9]
               (9)sorted,任何可迭代的对象,并返回一个列表。
               (10)高级排序,可以通过内建函数cmp,sort函数可以两个可选的参数key,reverse。(p59)
                        >>> X=['aardvark','abalone','anbjhjf','sads','dsfdsfsgdfgfdg']
                        >>> X.sort(key=len)
                        >>> X
                        ['sads', 'abalone', 'anbjhjf', 'aardvark', 'dsfdsfsgdfgfdg']
    四、元组
    元组的创建是通过逗号分隔一些值后便自动创建了元组。另外,元组大部分通过圆括号括起来的。
    (1)tuple函数,在功能上和List函数差不多,以一个序列作为参数,将序列转化为元组。
    (2)元组的分片,元组的分片还是元组。
     试验程序
                #选出数组(下面是列表)中元素长度在3-6之间的
                A=[12,3,4,4,5,5555,556,3,6,6,211111,334456778,23,45]
                n=0
                m=0
                B=[0 for i in range(1,len(A)+1)]#生成相同元素的列表
                C=[0 for i in range(1,len(A)+1)]#生成相同元素的列表
                #C=[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
                #B=[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
                for n in range(len(A)):
                    B[n]=len(str(A[n]))
                    if B[n]>=3 and B[n]<=6:
                        C[n]=B[n]
                        m+=1
                    else:
                        C[n]=0
                print '满足条件的元素个数为:',m
                print '列表中各个元素的长度列表为:',C #获取每个元素的长度
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值