zoukankan      html  css  js  c++  java
  • python学习笔记

    1.print语句

    例:Bob said "I'm OK".

    用/转义"或者用r'''内容'''输出

    print "Bob said "I'm OK"."
    
    或
    print r'''Bob said "I'm OK".'''

    2.list数据类型

    list是一种有序的集合,可以随时添加和删除其中的元素。由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。

    L = ['Adam', 95.5, 'Lisa',85, 'Bart', 59]
    #按照索引访问
    print L[0]#Adam
    #倒序访问
    print L[-1]#59
    #插入元素
    L.append('Mike')#插入尾部
    L.insert(2,'Paul')#插入索引位置的元素
    print L#['Adam', 95.5, 'Paul', 'Lisa', 85, 'Bart', 59, 'Mike']
    #删除元素
    L.pop()#删除尾部
    L.pop(2)#删除索引位置的元素
    print L#['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
    #替换元素
    L[2]='Paul'
    print L#['Adam', 95.5, 'Paul', 85, 'Bart', 59]

    3.tuple数据类型

    tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

    Note:用()定义单元素tuple有歧义,所以后面加一个逗号,例如t=(1,)。

    t = ('a', 'b', ['A', 'B'])
    print t
    t[2].append('C')#通过改变list"改变"tuple
    print t
    '''
    tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改
    成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
    output :
    ('a', 'b', ['A', 'B'])
    ('a', 'b', ['A', 'B', 'C'])
    '''
    

    4.dict数据类型

    在dict数据类型中,给定key可以找到对应的val。

    特点:

    1、查找速度快但是占用内存大,和list相反。

    2、存储的key-val序对是没有顺序的,打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。

    3、为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

    d = {
        'Adam': 95,
        'Lisa': 85,
        'Bart': 59
    }
    print d#{'Lisa': 85, 'Adam': 95, 'Bart': 59}无序
    #访问dict(两种方式)
    print d['Adam']#95
    print d.get('Lisa')#85
    #更新dict
    d['Paul']=72#加入
    d['Bart']=60#改变数值
    print d#{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}
    #遍历dict
    for key in d:
        print key,':',d[key]
    '''
    Lisa : 85
    Paul : 72
    Adam : 95
    Bart : 60
    '''

    5.set数据类型

    特点:无序、判断一个元素是否在set中速度很快、set存储的元素和dict的key类似,必须是不变对象。

    s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
    print s#set([('Lisa', 85), ('Adam', 95), ('Bart', 59)])
    #访问set(只能判断一个元素是否在set中)
    print ('Adam', 95) in s#True
    #遍历set
    for x in s:
        print x[0],':',x[1]
    '''
    Lisa : 85
    Adam : 95
    Bart : 59
    '''

    6.定义可变参数

    如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数,可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

    def average(*arg):#求平均值
        if len(arg)==0:
            print 0.0
        else:
            sum=0.0
            for x in arg:
                sum+=x
            print sum/len(arg)
    average()
    average(1, 2)
    average(1, 2, 2, 3, 4)
    '''
    0.0
    1.5
    2.4
    '''
    

    7.切片

    对经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

    ######list切片######
    L=range(1,21)
    print L
    #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    
    #前五个元素
    print L[:10]
    #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    #3的倍数
    print L[2::3]#从索引为2的数(3)开始到末尾,每三个打印一个
    #[3, 6, 9, 12, 15, 18]
    
    #前五个中3的倍数
    print L[2:10:3]#从索引为2的数(3)开始到索引为10(不包括索引为5的数),每三个打印一个
    #[3, 6, 9]
    
    #最后3个3的倍数
    print L[2::3]#L[2::3]为一个新的list
    print L[2::3][-3:]#新的list的倒数三个
    #[3, 6, 9, 12, 15, 18]
    #[12, 15, 18]
    
    ######字符串切片######
    #字符串开头大写
    def up(s):
        return s[:1].upper()+s[1:]
    print 'september'.upper()
    print up('september')
    #SEPTEMBER
    #September
    

    8.迭代

    在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

    #索引迭代:取出索引和元素
    #法一:enumerate()函数可把list每一个元素转换成(index,name)的tuple
    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    for index,name in enumerate(L):
        print index,'-',name
       
    #法二:zip()函数可把两个list变成一个list
    for index,name in zip(range(0,len(L)),L):
        print index,'-',name    
    '''
    0 - Adam
    1 - Lisa
    2 - Bart
    3 - Paul
    '''
    
    #迭代dict的val
    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
    for v in d.itervalues():#用d.values()也可,但values()要通过将d内的values生成list,更加耗内存
        print v
    # 85 74 95 59 无序
    
    #迭代dict的val
    for i,v in d.iteritems():#用d.values()也可,但items()要通过将d内的(index,value)生成list,更加耗内存
        print i,':',v
    '''
    Lisa : 85
    Paul : 74
    Adam : 95
    Bart : 59
    '''
    

    9.多层表达式

    for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

    print [m+n for m in 'ABC' for n in '123']
    #['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
  • 相关阅读:
    POJ
    模板
    HDU
    CodeForces
    CodeForces
    Java
    百度之星2014复赛
    百度之星2014复赛
    转载
    百度之星2014初赛
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/10262671.html
Copyright © 2011-2022 走看看