zoukankan      html  css  js  c++  java
  • python基础篇之进阶

                                  python基础篇之进阶                           

    参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html

    • python种类

    1. cpython  使用c解释器生产.pyc(字节码),然后转换成机器码,最后到cpu
    2. javapython java解释器-->字节码-->机器码-->cpu
    3. IronPython C#解释器-->字节码 --> 机器码--> cpu
    4. pypy  内部使用自己的解释器编译成字节码-->机器码.最后在外部执行的时候直接是机器码,速度要快

    • python2.7中编码转换简介:

    gbk转utf8: gbk → unicode(编码encode)→ utf8

    utf8转gbk: uft8 (解码decode)→  Unicode → gbk

    • 获取传入的参数:

    import sys
    print sys.argv   【argv类型是个列表】
     
    python index.py runserver 8080
    ['index.py', 'runserver', '8080']
    • 小知识点:

    -5 ~ 257   小数池,在内存空间,做缓存用

    pass   占位,什么都不干

    contains 和 in  作用相同

    • 整数:

    bit_length:计算二进制需要借用几位算出18】
    
    age = 18
    result = age.bit_length()
    print(result)
    18
    bin(18)
    print(bin(18))
    0b10010 #b是二进制的意思


    【abs:返回绝对值】
    age = 18
    print(age.__abs__())
    18
    age = -18
    print(age.__abs__())
    18
    【divmod:相除18//9 求商 和 余数】
    age = 18
    result = age.__divmod__(9)
    print(result)

    (2, 0)
     
    【add: 相加】
    age = 19
    result = age.__add__(1)
    print(result)

    【把18转换为浮点数】
    num=18
    print(num.__float__())
    【计算数据类型占用内存大小】
    num = 18
    result = num.__sizeof__()
    print(result)
    •  字符串操作

    【查找freddy是否包含“re”字符;与【if name in er:】用法类似】
    name = 'freddy'
    result = name.__contains__('re')
    print(result)
    
    【把首字母转换成大写】
    name = 'freddy hahahahah'
    result = name.capitalize()
    print(result)
    
    【把首字母的大写转换成小写】
    name= 'Freddy'
    result = name.casefold()
    print(result)

    【】 【把freddy居中,并且在freddy周围加上“
    *”符号;】 name = 'freddy' result=name.center(30,'*') print(result) 【查找d出现的次数】 name = 'freddy' result = name.count('d') print(result) 【在0~4范围内,查找d出现的次数】 name = 'freddy' result = name.count('d',0,4) print(result) 【把“唐胜伟”转换成gbk编码】 name = '唐胜伟' result = name.encode('gbk') print(result) 【在 0,4 这个范围内查找是不是以 y 结尾】 【查找范围规则:大于等于0 and 小于3】 name = 'freddy' result = name.endswith('y',0,4) print(result) 【把 tables键 换成8个空格;应用场景:把配置文件的tab全换成空格】 name = 'fre ddy' result = name.expandtabs() print(result) print(len(result))

    【查找指定字符所在的下标位置,find找不到时返回“-1”;index找不到时会“报错”】
    name = 'freddy'
    #result = name.find('d')
    result = name.index('d')
    print(result)

    【字符串拼接】
    name = 'freddy {0} as {1}'
    result = name.format('1sb','2sb')
    print(result)

    【把列表里的字符串进行拼接】
    name = ['f','r','e','d','d','y']
    result = "_".join(name)
    print(result)

    【以“is”为标志位,把字符串分割】
    name = 'freddyissb'
    result = name.partition('is')
    print(result)

    【把s替换成8; "3":指定你想替换几个,并不是替换的范围】
    name = 'freddyissb'
    result = name.replace('s','8')
    #result = name.replace('s','8',3)
    print(result)

    【去掉换行符,以列表形式打印出来】
    name = '''
    aa
    bb
    cc
    '''
    result = name.splitlines()
    print(result)

    【以空格为分割符进行切割】
    name = 'Freddy freddy'
    result = name.split(' ')
    print(result)


    【strip:指定去掉的字符,和splitlines功能相同;split:去掉分割符并进行拼接】
    name = '''
    aa
    bb
    cc
    '''
    result = name.split(" ")
    print(result)

    【去掉字符串两边的空格】
    name = ' Freddy '
    result = name.strip()
    print(result)

    【去掉字符串左边的空格】
    name = ' Freddy'
    result = name.lstrip()
    print(result)
    【去掉字符串右边的空格】
    name = 'Freddy '
    result = name.rstrip()
    print(result)


    【查找‘freddy’中是否包含‘re’】
    name='freddy'
    result = name.__contains__('re')
    print(result)

    【判断是否包含字母or数字】
    name = 'freddy123'
    result = name.isalnum()
    print(result)
    【判读是否只是字母】
    name = 'freddy123'
    result = name.isalpha()
    print(result)
    【判断是否只是数字】
    name = 'freddy123'
    result = name.isdigit()
    print(result)
    【 检测是否为空】
    name = 'freddy'
    result = name.isspace()
    print(result)
    【判断每个单词首字母是否是大写】
    name = 'Freddy Freddy'
    result = name.istitle()
    print(result)
    【把大写字母全部转换成小写字母】
    name = 'FREDDY'
    result = name.lower()
    print(result)
    【判断字符串是否相等】
    name = 'Freddy'
    result = name.__eq__('Freddy')
    print(result)
    •  列表

    【给列表追加内容】
    name = ['Freddy']
    name.append('sb')
    print(name)
    【统计Freddy的个数,嵌套列表,只会统计外层】
    name = ['Freddy','Freddy',['Freddy','Freddy']]
    result = name.count('Freddy')
    print(result)


    【对原来列表的扩展】 li
    = list([1,2,3,]) print(li) li.extend([4,5,]) print(li) 【在第0个位置放入一个freddy】 li = list([1,2,3,]) li.insert(0,'freddy') print(li) 【pop:删除列表中下标是0的值】 li = list([1,2,3,]) ret = li.pop(0) print(li) print(ret) ##能够打印出pop删除的值; 【指定删除11这个数字】 li = [11,11,22,33,44] print(li) li.remove(11) print(li) 【反转打印显示结果】 li = [11,11,22,33,44] print(li) li.reverse() print(li)

    【使用sort进行排序】
    name = ['bb','cc','aa']
    name.sort()
    print(name)
    • 元组:

    元组and元素:

    【元组的元素不可修改】  

    【元组元素的元素可以修改】

    【统计这个元组中有几个88】
    name = (22,88,33,55,33,88)
    result = name.count(88)
    print(result)

    【查找元组中88的第一个索引值】
    name = (22,88,33,55,33,88)
    result = name.index(88)
    print(result)
    【判断元组中是否包含88这个数字】
    name = (22,88,33,55,33,88)
    result = name.__contains__(88)
    print(result)
    • 字典: dict是内置类的变量名,自己不能使用dict名字做变量名。

    定义字典:

    【以下这两个例子意义相同】

    dic = {'k1':'v1','k2':'v2'}
    dic = dic(k1='v1',k2='v2')

    字典取值操作:

    获取字典中的key:  keys

    获取字典中的value: values

    同时获取key和value:  items

    【用print取字典里面的值,取不到会报错】
    dic={'k1':'v1','k2':'v2'}
    print(dic['k1'])
    print(dic['k2'])
    print(dic['k3'])
    
    【这个方法找不到“K3”会返回None,如果传入值,则会打印传入的值】
    print(dic.get('k1'))
    print(dic.get('k2'))
    print(dic.get('k3','alex'))
    
    【pop必须要指定删除的“k”】
    dic={'k1':'v1','k2':'v2'}
    dic.pop('k1')
    print(dic)
    
    【给dic字典增加一个“key”】
    dic={'k1':'v1','k2':'v2'}
    dic['k3'] = 123
    print(dic)
    
    【给dic字典增加一个“key”】
    dic={'k1':'v1','k2':'v2'}
    dic.update({'k3':888})
    print(dic)

    【清空字典】
    dic={'k1':'v1','k2':'v2'}
    dic.clear()
    print(dic)

    【浅copy字典】
    food = {'1':'apple','2':'banana'}
    newfood = food.copy()
    print(newfood)
    •  set集合

    set集合是一个无序且不重复的集合。
    创建一个set集合:
     name = set('abbbbbbbbbb')
    print(name)
    set(['a', 'b'])


    • 小练习

    例1:把 [11,22,33,44,55,66,77,88,99,],11~55放到列表A中,把66~99放入列表B中,最后以字典的形式打印出来:

    例1:
     san_list = [11,22,33,44,55,66,77,88,99,90,]
    dic = {}
    dic['k1']=san_list[0:5]
    dic['k2']=san_list[5:]
    print(dic)
    
    例2:
    Li = [11,22,33,44,55,66,77,88,99,90,]
    Li1=[]
    Li2=[]
    for num in Li:
    if num > 66:
            Li1.append(num)
    else:
            Li2.append(num)
    dic={'k1':Li1,'k2':Li2}
    print(dic)
    
    例3:
    Li = [11,22,33,44,55,66,77,88,99,90,]
    Li1 = []
    Li2 = []
    for num in range(len(Li)):   ##检索Li整个列表,使用len函数来计算循环次数;
        if int(Li[num]) > 66:          ##对比Li里面的值是否大于66;
            Li1.append(Li[num])  ##把大于66的值写入到Li1列表中;
        else:
            Li2.append(Li[num])
    dic = {'k1':Li1,'k2':Li2}   ##字典嵌套列表的形式打印出结果来;
    print(dic) 
    
    例4,推荐:
    Li = [11,22,33,44,55,66,77,88,99,90,]
    dic = {}
    for num in Li:
        if num > 66:
            if 'k1' in dic.keys():
                dic['k1'].append(num)
            else:
                dic['k1'] = [num,]
        else:
            if 'k2' in dic.keys():
                dic['k2'].append(num)
            else:
                dic['k2'] = [num,]
    print(dic)
    View Code
  • 相关阅读:
    P1541 乌龟棋
    P1725 琪露诺
    P1622 释放囚犯
    P1417 烹调方案
    积木大赛
    换教室
    C#文件和目录的操作
    C#应用程序所有已经打开的窗体的集合
    C#winform自定义滚动条
    C#ADO.NET基础二
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/5119150.html
Copyright © 2011-2022 走看看