上一次修改时间:2018-07-29 01:09:29

python基础1

  1. python基础

  2. 官方内置函数文档地址:https://docs.python.org/2/library/functions.html#abs

  3. #coding=utf-8
    # 单行注释,即使是在注释中使用中文,也必须在文件开头声明字符编码,否则会报错;
    '''多行注释1'''
    """
    多行注释2
    """
    
    # 多行字符串
    strMulti1 = '''pikaqiu'''
    strMulti2 = """
    piqiu 
    """
    print strMulti1,strMulti2
    
    # 格式化输出 %s 字符串 %d 整形 %f 浮点数 %x 十六进制数
    print '%s进化后,是%s' % ('皮丘','皮卡丘')
    
    # 数据类型:list和tuple
    # 区别 list里的值可以更改,tuple里的值是不能更改的,list的下标是从0开始的
    pikaqiuFamilyList = ['皮丘','皮卡丘','雷丘'] #变长动态list需要用函数append(params)
    pikaqiuFamilyMultiList = ['皮丘','皮卡丘','雷丘',['皮小丘']]
    print pikaqiuFamilyList,pikaqiuFamilyMultiList
    
    piakqiuFamilyTuple = ('皮丘','皮卡丘','雷丘') #当tuple里的某个元素是list里,因tuple里对应的元素保存的是list的引用,因此,该tuple里的list的值是可以改变的
    print piakqiuFamilyTuple
    
    #流程控制示例
    num = 2;
    if num > 1:
        print 1
        print 2
        print 3
        print 4
    else:
        print 6
        print 5
    print 7 #输出结果为1,2,3,4,7
    
    names = ['piqiu','pikaqiu','leiqiu']
    for name in names:
        print name
    
    sum = 0
    n = 100
    while n > 0:
        sum += n
        n -= 2
    print sum
    
    # dict和set,dict类似关联数组,set和dict的唯一区别仅在于没有存储对应的value
    pikaqiuDict = {'piqiu':'皮丘','pikaqiu':'皮卡丘'}
    pikaqiuDict['leiqiu'] = '雷丘'
    print pikaqiuDict   
    
    # set是一组不能重复的key,set中如果有重复key,则会被自动过滤掉,set可以进行交集,并集操作
    pikaqiuSet1 = set(['皮丘','皮卡丘','雷丘'])
    pikaqiuSet2 = set(['皮小丘','皮丘'])
    print pikaqiuSet1 & pikaqiuSet2
    
    # 数据类型转换函数示例:int(),float(),str(),unicode(),bool()
  4. 函数、特性、类

  5. # 自定义函数,返回多个返回值
    def pikaqiu(param='pixiaoqiu'):
        if param == 'pikaqiu':
            return 'pikaqiu','piqiu'
        else:
            return 'leiqiu','pikaqiu'
    
    pockemon1, pockemon2 = pikaqiu('pikaqiu')
    print pockemon1,pockemon2
    
    # 占位符pass定义空函数
    def pikaqiuNone():
        pass
    
    # 特性------切片
    pikaqiuList = ['piqiu','pikaqiu','leiqiu']
    newPikaqiuList = pikaqiuList[1:3]
    print newPikaqiuList
    
    # 特性------迭代
    pikaqiuList = ['piqiu','pikaqiu','leiqiu']
    for key,value in enumerate(pikaqiuList):
        print key,value
    
    #高阶函数map和reduce
    def numAdd(num):
        num += 1
        return num
    
    addMap = map(numAdd,[1,2,3,4])
    print addMap    #[2, 3, 4, 5]
    
    def numAddReduce(numX,numY):
        return numX + numY
    addReduce = reduce(numAddReduce,[1,2,3,4])
    print addReduce  #10
    
    #filter过滤掉不符合条件的元素
    def isOdd(num):
        return num % 2 == 1
    numList = [1,2,3,4,5]
    newNumList = filter(isOdd,numList)
    print newNumList    #[1, 3, 5]
    
    # 类的定义与实例化
    class Pikaqiu(object):
        __leiqiu = 'leiqiu'    #私有变量private
        def __init__(self):
            pass
    
        def piqiuPrint(self):
            print 'piqiu'
    
    pikaqiu = Pikaqiu()
    pikaqiu.piqiuPrint()
    
    # type和isinstance
    # type主要用于获取未知变量的类型,isinstance主要用于判断A类是否继承于B类
    class father(object):
          pass
    class son(father):
          pass
    if __name__ == '__main__':   
        print type(son())==father    #False
        print isinstance(son(),father) #True   
        print type(son())  # <class '__main__.son'> 
        print type(son)    #<type 'type'>
  6. 字符串操作

  7. # 去空格及特殊符号
    s = "  pikaqi u,  "
    #s = s.lstrip() #去除左空格
    #s = s.rstrip() #去除右空格
    s = s.strip() #去除左右空格
    s = s.replace(' ', '')  #去除中间空格
    print s  # pikaqiu
    
    # 字符串查找
    # < 0 为未找到,index()用法同find(),但index没找到字符串时,会抛出异常
    # rfind和rindex方法用法和上面一样,只是从字符串的末尾开始查找
    sStr1 = 'strchr'
    sStr2 = 'l'
    nPos = sStr1.find(sStr2)
    print nPos #- 1
    
    # 连接字符串
    sStr1 = 'pika'
    sStr2 = 'qiu'
    sStr1 += sStr2
    print sStr1 # pikaqiu
    #另一种连续方式
    delimiter = ','
    mylist = ['Brazil', 'Russia', 'India', 'China']
    print delimiter.join(mylist)
    
    # 字符串比较
    sStr1 = 'pikaqiu'
    sStr2 = 'piqiu'
    print cmp(sStr1,sStr2) # 相同返回0,不同返回-1
    
    # 输出字符串长度
    sStr1 = 'pikaqiu'
    print len(sStr1) #7
    
    #将字符串中的大小写转换
    sStr1 = 'PikaQiu'
    #sStr1 = sStr1.upper()
    sStr1 = sStr1.lower()
    print sStr1 # pikaqiu
    
    # 追加指定长度的字符串
    sStr1 = 'pikaqiu'
    sStr2 = '12345'
    n = 5
    sStr1 += sStr2[2:n]
    print sStr1 # pikaqiu345
    
    # 翻转字符串
    sStr1 = 'pikaqiu'
    sStr1 = sStr1[::-1]
    print sStr1 # uiqakip
    
    # 分割字符串
    sStr1 = 'piqiu,pikaqiu,leiqiu'
    sStr2 = ','
    sStr1 = sStr1[sStr1.find(sStr2) + 1:]
    print sStr1 # pikaqiu,leiqiu
    #或者
    s = 'piqiu,pikaqiu,leiqiu'
    print(s.split(',')) # ['piqiu', 'pikaqiu', 'leiqiu']
    
    # php中addslashes的实现
    def addslashes(s):
        d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
        return ''.join(d.get(c, c) for c in s)
     
    s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
    print s # John 'Johny' Doe (a.k.a. "Super Joe")\
    print addslashes(s) # John \'Johny\' Doe (a.k.a. \"Super Joe\")\\\
    
    #截取字符串
    str = '0123456789'
    print str[0:3] # 012   截取第一位到第三位的字符   
    print str[:] # 0123456789   截取字符串的全部字符
    print str[6:] # 6789   截取第七个字符到结尾
    print str[:-3] # 0123456   截取从头开始到倒数第三个字符之前
    print str[2] # 2   截取第三个字符
    print str[-1] # 9   截取倒数第一个字符
    print str[::-1] # 9876543210   创造一个与原字符串顺序相反的字符串
    print str[-3:-1] # 78   截取倒数第三位与倒数第一位之前的字符
    print str[-3:] # 789   截取倒数第三位到结尾
    print str[:-5:-3] # 96   逆序截取
  8. dict常用操作

  9. 1、增加key-value;通过dict_stu[key_new]={value_new};  通过dict_stu.update(dict_new);  
    2、修改某个key对应的value;通过dict_stu[key_modify]={values_new}
    3、查找某个key对应的value;通过dict_stu[key_find];  通过dict_stu.get(key_find);  通过dict_stu.setdefault(key_find,"defualt value"); 
    3.1、返回字典中所有的值;通过dict_stu.values()
    4、删除某个key对应的value;通过del dict_stu[key_del]; 通过dict_stu.pop(key_del);  
    5、复制一个字典:通过dict_stu.copy()
    6、判断字典key是否在字典中:通过key in dict_stu;  通过key not in dict_stu
    7、计算字典的长度:通过len(dict_stu)
    8、创建一个(不)含默认值的字典:dict.fromkeys(key_list,values)
    9、删除整个字典:通过del dict_stu;  通过dict_stu.clear(
  10. 1