zoukankan      html  css  js  c++  java
  • python基础二

    一  基本数据类型

    1 int  数字

    #bit_length() 当十进制用二进制表示时,最少使用的位数
    v = 11
    data = v.bit_length()
    print(data)

    2 bool  布尔值

    布尔值就两种:True,False。就是反应条件的正确与否。

    真   1   True。

    假   0   False。    

    3 str  字符串

    3.1 字符串的索引与切片。

    索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

    a = '我们都有一个家,名字叫中国'
    print(a[0])
    print(a[3])
    print(a[5])
    print(a[7])

    切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)。

    s = "伊丽莎白鼠的溜肥肠还有挖掘机"
    #切片 [起始位置: 结束位置] 1.顾头不顾尾, 2.从左往右切
     print(s[1:3])   # 从1切到3. 但是取不到3  [1,3)
    print(s[1:]) # 从1开始切. 切到结尾
    print(s[:2]) # 从头切到2
    print(s[:]) # 从头到尾
    print(s[-3:-1]) # 只能从左往右切

     注意;步长:如果是整数或者没写,则从左往右获取:如果是负数,则从右往左获取,默认是1

         切片语法:str[start:end:step]

             start:起始位置,

             end:结束位置

             step:步长

    3.2 字符串常用方法。

    #captalize,swapcase,title
    print(name.capitalize()) #首字母大写
    print(name.swapcase()) #大小写翻转
    msg='egon say hi'
    print(msg.title()) #每个单词的首字母大写
    
    # 内同居中,总长度,空白处填充
    ret2 = a1.center(20,"*")  
    print(ret2)
    
    #数字符串中的元素出现的个数。
    # ret3 = a1.count("a",0,4) # 可切片
    # print(ret3)
    
    a2 = "hqw	"
    #	前面的补全
    # 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
    ret4 = a2.expandtabs()
    print(ret4)
    
    a4 = "dkfjdkfasf54"
    #startswith 判断是否以...开头
    #endswith 判断是否以...结尾
    # ret4 = a4.endswith('jdk',3,6)  # 顾头不顾腚
    # print(ret4)  # 返回的是布尔值
    # ret5 = a4.startswith("kfj",1,4)
    # print(ret5)
    
    #寻找字符串中的元素是否存在
    # ret6 = a4.find("fjdk",1,6)
    # print(ret6)  # 返回的找到的元素的索引,如果找不到返回-1
    
    # ret61 = a4.index("fjdk",4,6)
    # print(ret61) # 返回的找到的元素的索引,找不到报错。
    
    #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。
    # ret9 = 'title,Tilte,atre,'.split('t')
    # print(ret9)
    # ret91 = 'title,Tilte,atre,'.rsplit('t',1)
    # print(ret91)
    
    #format的三种玩法 格式化输出
    res='{} {} {}'.format('egon',18,'male')
    res='{1} {0} {1}'.format('egon',18,'male')
    res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
    
    #strip
    name='*egon**'
    print(name.strip('*')) 
    print(name.lstrip('*'))
    print(name.rstrip('*'))
    
    #replace
    name='alex say :i have one tesla,my name is alex'
    print(name.replace('aa','SB',1))
    
    #####is系列
    name='jinxin123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    print(name.isdigit()) #字符串只由数字组成
         isnumeric():可以进行中文识别

    4 tuple  元组

    元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

    元组俗称不可变的列表,  用( )表示,里面可以放任何类型的数据,可以查询,循环,切片.但是不可以改变.

         如果元组只有一个元素(元素,)

            tuple(3,)

         空元组:tuple()

          元组是一个可迭代对象,可使用for循环.

    tu = ("马云","马化腾","雷军","异人夜")
    tu[0] = "呵呵"
    print(tu)
    
    
    结果:
      File "E:/lx/00003.py", line 58, in <module>
        tu[0] = "呵呵"
    TypeError: 'tuple' object does not support item assignment
    tu = ("马云","马化腾","雷军","异人夜",["川普","pujing","金三胖",[1,2,3,4],"酋长"],"刘强东")
    tu[4][1] = tu[4][1].upper()
    print(tu)
    
    
    结果:
    ('马云', '马化腾', '雷军', '异人夜', ['川普', 'PUJING', '金三胖', [1, 2, 3, 4], '酋长'], '刘强东')

    5 list  列表

    列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

    li = [‘zhh’,123,Ture,(1,2,3,’zhangqiang’),[1,2,3,’小明’,],{‘name’:’lisi’}]

    列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

    格式化输出

     列表的增删改查

    1增

    append() 追加
    insert(index, 元素) 在index位置添加元素
    extend() 迭代添加

    li = [1,'a','b',2,3,'a']
    # li.insert(0,55) #按照索引去增加
    # print(li)
    #
    # li.append('aaa') #增加到最后
    # li.append([1,2,3]) #增加到最后
    # print(li)
    #
    # li.extend(['q,a,w']) #迭代的去增
    # li.extend(['q,a,w','aaa'])
    # li.extend('a')
    # li.extend('abc')
    # li.extend('a,b,c')
    # print(li)

    2删

    pop(index) 按照位置删除元素
    remove(元素) 直接删除元素
    del 切片.
    clear() 清空列表

    # l1 = li.pop(1) #按照位置去删除,有返回值
    # print(l1)
    
    # del li[1:3] #按照位置去删除,也可切片删除没有返回值。
    # print(li)
    
    # li.remove('a') #按照元素去删除
    # print(li)
    
    # li.clear() #清空列表

    3 改

    索引修改
    切片修改

    # 改
    # li = [1,'a','b',2,3,'a']
    # li[1] = 'dfasdfas'
    # print(li)
    # li[1:3] = ['a','b']
    # print(li)

    4. 查
    for el in list:
    el

    lst = ["马化腾","马云","王健林","异人夜","刘强东"]
    for el in lst:        #element(元素)
        print(el)
    
    
    结果:
    马化腾
    马云
    王健林
    异人夜
    刘强东

    5 其他操作

    count(数)(方法统计某个元素在列表中出现的次数)。

    1 a = ["q","w","q","r","t","y"]
    2 print(a.count("q"))

    index(方法用于从列表中找出某个值第一个匹配项的索引位置)
    1 a = ["q","w","r","t","y"]
    2 print(a.index("r"))

    sort (方法用于在原位置对列表进行排序)。

     reverse (方法将列表中的元素反向存放)。

    lst = [1,5,8,99,48,156,3,24,56]
    lst.sort()
    print(lst)
    lst.sort(reverse=True)      
    print(lst)
    
    
    
    结果;
    [1, 3, 5, 8, 24, 48, 56, 99, 156]
    [156, 99, 56, 48, 24, 8, 5, 3, 1]
    lst = ["马云","马化腾","刘强东","雷军","异人夜"]
    lst.reverse()
    print(lst)
    
    
    结果:
    ['异人夜', '雷军', '刘强东', '马化腾', '马云']

    6 列表的嵌套

    lst = ["马云","马化腾","雷军","异人夜",["川普","pujing","金三胖",[1,2,3,4],"酋长"],"刘强东"]
    print(lst[2])             #找到雷军
    
    print(lst[4][3][1])       #找到2
    
    lst[4][1] = lst[4][1].upper()     #将pujing变成大写,在放回去
    print(lst)
    
    lst[4][0] = lst[4][0].replace("川普","特朗普")
    print(lst)
    #把川普换成特朗普
    
    
    
    
    
    
    
    结果:
    雷军
    ['马云', '马化腾', '雷军', '异人夜', ['川普', 'PUJING', '金三胖', [1, 2, 3, 4], '酋长'], '刘强东']
    ['马云', '马化腾', '雷军', '异人夜', ['特朗普', 'pujing', '金三胖', [1, 2, 3, 4], '酋长'], '刘强东']

    range

    1. 使用range和for循环来获取列表中的索引.

                         for  i  in  range(len(列表)):

                                i  : 索引

                                列表[i]   元素

            例:

    lst = ("马云","马化腾","雷军","异人夜")
    #获取到列表的索引,拿到索引后,可以拿到元素.
    for i in range(len(lst)):
        print(i)                          #i就是lst的索引
        print(lst[i])
    
    
    
    
    
    结果:
    马化腾
    雷军
    异人夜

    2.range可以进行切片

                         ① .range(n)           从0到n-1

                            for i in range(10):

                                 print(i)

                         ②.range(m,n)        从m到n-1

                         ③.range(m,n,q)     从m到n-1,每q个取1个 

    字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

      字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

          语法:

                   {key1:value,key2:value2....}

           注意:key(键)     必须是不可变的(可哈希)  ,    valve没有要求,可以是保存任何类型的数据.   

             dic[key] = value                      在后面增加一个.

             dic.setdefault(key,value)         如果键(key)在字典中不进行任何操作,不在则添加.

              可以通过key进行查询,如果没有key返回None.

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    dic["大鹏"] = "浑天大圣"        #在后面新增一个
    print(dic)
    
    dic.setdefault("蛟龙","覆海大圣")
    print(dic)
    
    dic.setdefault("猴子","悟空")  
    print(dic)
    
    dic.setdefault("猴子","齐天大圣")
    print(dic)
    
    结果:
    {'猴子': '悟空', '': '八戒', '': '哮天犬', '': '牛魔王', '大鹏': '浑天大圣', '蛟龙': '覆海大圣'}
    {'猴子': '悟空', '': '八戒', '': '哮天犬', '': '牛魔王', '大鹏': '浑天大圣', '蛟龙': '覆海大圣'
    {'猴子': '悟空', '': '八戒', '': '哮天犬', '': '牛魔王', '大鹏': '浑天大圣'}
    {'猴子': '悟空', '': '八戒', '': '哮天犬', '': '牛魔王', '大鹏': '浑天大圣'}

     2.删除:

              pop(key)             有返回值,返回的是被删除的value.

               del dic[key]         

               popitem()             随机删除(在python3.6版本中,删除字典中最后一个,不随机了)

               clear ()                 清空字典.

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    dic.pop("猴子")
    print(dic)
    
    del dic[""]
    print(dic)
    
    dic.popitem()
    print(dic)
    
    dic.clear()
    print(dic)
    
    结果:
    {'': '八戒', '': '哮天犬', '': '牛魔王'}
    {'': '哮天犬', '': '牛魔王'}
    {'': '哮天犬'}
    {}

    改:

              dic[key] = value           强制修改

              dic.update(dic1)           把dic1中的内容更新到dic中,如果key重名,则修改替换,如果不存在,则新增.

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    dic["猴子"] = "齐天大圣"
    print(dic)
    
    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    dic1 = {"覆海大圣":"蛟魔王","混天大圣":"鹏魔王","":"悟能"}
    dic1.update(dic)
    print(dic1)
    
    
    结果:
    {'猴子': '齐天大圣', '': '八戒', '': '哮天犬', '': '牛魔王'}
    {'覆海大圣': '蛟魔王', '混天大圣': '鹏魔王', '': '八戒', '猴子': '悟空', '': '哮天犬', '': '牛魔王'}

    查:

             get(key)                                        查看,没有返回None,可以指定返回的内容

             dic[key]                                        查看,没有这个键时查询会报错.

             setdefault(key)                             查看,没有返回None.

             for  循环:        for i in dic:            #for  循环默认是获取字典中的键.

                        print(i)

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    print(dic.get("猴哥","叫哥")) 
    
    print(dic.get("猴子"))
    
    print(dic[""])
    
    print(dic.setdefault(""))
    
    print(dic.setdefault("大鹏"))
    
    结果;
    
    
    叫哥
    悟空
    八戒
    牛魔王
    None
    for i in dic:
        print(i)
    
    结果;
    猴子
    猪
    狗
    牛
    大鹏

    字典的其他操作

        keys                     获取到所有的键存在一个高仿的列表中.

             values                  获取到所有的值存在一个高仿的列表中.

             items                    获取到所有的键值对元组的形式存在一个高仿的列表中.

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    print(dic.keys())
    print(dic.values())   
    print(dic.items())                    #高仿列表
                                              
    for i in dic.keys():
        print(i)
    
    for i in dic:                         #获取到字典中的每一个键
        print(i)
    
    for i in dic.values():               #获取到字典中的每一个值
        print(i)
    
    for i in dic.items():
        print(i)
    
    结果:
    dict_keys(['猴子', '', '', ''])
    dict_values(['悟空', '八戒', '哮天犬', '牛魔王'])
    dict_items([('猴子', '悟空'), ('', '八戒'), ('', '哮天犬'), ('', '牛魔王')])
    
    猴子
    猪
    狗
    牛
    
    猴子
    猪
    狗
    牛
    
    悟空
    八戒
    哮天犬
    牛魔王
    
    ('猴子', '悟空')
    ('', '八戒')
    ('', '哮天犬')
    ('', '牛魔王')

    2.解构(解包):

             a,b = 1,2

              a,b = (1,2)

              a,b = [1,2]

    dic = {"猴子":"悟空","":"八戒","":"哮天犬","":"牛魔王"}
    
    a,b = "12"          #将后面解构打开按位置赋值给变量,支持--字符串,列表,元组
    print(a)
    print(b)
    
    for a,b in dic.items():
        print(a)
        print(b)
    
    结果:
    2
    
    
    猴子
    悟空
    猪
    八戒
    狗
    哮天犬
    牛
    牛魔王
    dic1 = {}
    dic = dic1.fromkeys([1, 2, 3], 'abc')
    print(dic)
    
    
    结果:
    {1: 'abc', 2: 'abc', 3: 'abc'}

    字典的嵌套

    #将熊大的年龄改成19岁
    dic = {
                    'name':'汪峰',
                    'age':43,
                    'wife':{
                        'name':'国际章',
                        'age':39,
                        'salary':100000
                    },
                    'baby':[
                        {'name':'熊大','age':18},
                        {'name':'熊二','age':15},
                    ]
    
                }
                dic["baby"][0]["age"] = 19
                print(dic)
    
    结果:
    {'name': '汪峰', 'age': 43, 'wife': {'name': '国际章', 'age': 39, 'salary': 100000}, 'baby': [{'name': '熊大', 'age': 19}, {'name': '熊二', 'age': 15}]}

    集合

     set集合的元素是不重复的,无序的,元素必须是可哈希的(int,str,tuple,bool).也是用{}表示

    set = {"4",4,[1,2,3]}                                  #会报错
    set = {"2","dsjoijfj",897,{"回话":"看看"}}      #会报错
    
    set = {1,6,"回话",6,8,6,"呵呵"}        #set集合可以去重复
    print(set)
    
    
    结果:
    {1, '回话', 6, 8, '呵呵'}

    去重复

    可以把列表转换成集合进行去重复,
    
    lst = [1,5,6,8,7,2,5,6,9,8,4,5,2]
    s = set(lst)                                 #列表转换成集合
    print(s)
    lst = list(s)                                  #集合转换成列表
    print(lst)
    
    
    结果:
    {1, 2, 4, 5, 6, 7, 8, 9}
    [1, 2, 4, 5, 6, 7, 8, 9]
    可以把列表转换成集合进行去重复,
    
    lst = [1,5,6,8,7,2,5,6,9,8,4,5,2]
    s = set(lst)                                 #列表转换成集合
    print(s)
    lst = list(s)                                  #集合转换成列表
    print(lst)
    
    
    结果:
    {1, 2, 4, 5, 6, 7, 8, 9}
    [1, 2, 4, 5, 6, 7, 8, 9]

    深浅拷贝

    1.浅拷贝    

    浅拷贝,只拷贝第一层内容,方法: [:]     copy()  

    lst = ["","","",""]
    lst1 = lst                              #==赋值操作没有创建对象,所以只有一个列表,内存地址一样.
    lst.append("")
    print(lst)
    print(lst1)
    
    
    结果:
    ['', '', '', '', '']
    ['', '', '', '', '']
    lst = ["","","",""]
    lst1 = lst.copy()
    lst.append("回话")
    print(lst)
    print(lst1)
    print(id(lst))
    print(id(lst1))
    
    答案:
    ['', '', '', '', '回话']
    ['', '', '', '']
    42333960
    
           #两个lst完全不一样,内存地址和内容页不一样
    lst = ["","","","",["","",""]]
    lst1 = lst.copy()
    lst[4].append("")
    print(lst)
    print(lst1)
    print(id(lst[4]))                   #lst和lst1中的第四个元素比较,内存一样
    print(id(lst1[4]))
    
    答案:
    ['', '', '', '', ['', '', '', '']]
    ['', '', '', '', ['', '', '', '']]
    38728776
    
                         #浅拷贝,只会拷贝第一层,第二层内容不会拷贝.

      2.深拷贝:把拷贝对象内部的内容全部拷贝一份,引入copy模块,  deepcopy().

    import copy                                          #插入copy模块
    lst = ["","","","",["","",""]]
    lst1 = copy.deepcopy(lst)
    lst[4].append("")
    print(lst)
    print(lst1)
    print(id(lst[4]))
    print(id(lst1[4]))
    
    
    结果:
    ['', '', '', '', ['', '', '', '']]
    ['', '', '', '', ['', '', '']]
    42575112
               都不一样了,深度拷贝,把元素内部的元素进行拷贝复制,不会产生一个改变另一个也改变的问题.
  • 相关阅读:
    Python-dict与set
    Python-实现对表插入百万条数据
    Python—元组tuple
    数据库查询
    python-操作MySQL数据库
    Python-类的继承
    Python-内置类属性
    Python-类的概念及使用1
    Python异常处理
    了解dto概念,什么是DTO
  • 原文地址:https://www.cnblogs.com/xihuxiangri/p/9393047.html
Copyright © 2011-2022 走看看