• python基础数据类型整理


    一、数据类型

    (一)、小技巧

    1、PyCharm:选中多行,按“Ctrl+/”可批量注释掉

    (二)、字符串

    1、startswith(str,[,start][,end])
    #判断字符串是否以str开头
    s = 'lichuanlei'
    print(s.startswith('le',7,9))
    

    实例输出结果:

    True
    
    2、replace(str_old,str_new[,num])
    #替换字符串
    s = 'lichuanlei'
    print(s.replace('l','L',2))
    print(s.replace('l','L'))
    

    实例输出结果:

    LichuanLei
    LichuanLei
    
    3、strip
    #去除左右字符串
    s = '   
    	lichuanlei
    	  '
    print(s.strip())      #去除首尾空格
    s2 = 'lichuanlei'  
    print(s2.strip('li'))  #去除首尾字符串‘li’
    

    实例输出结果:

    lichuanlei
    chuanle
    
    4、split
    #默认按空格分隔,返回一个列表
    #str-->list
    s = 'Tom Mary Peter'
    s2 = 'Tom:Mary:Peter'
    s3 = ':Tom:Mary:Peter'
    print(s.split())
    print(s2.split(':'))
    print(s3.split(':'))
    

    实例输出结果:

    ['Tom', 'Mary', 'Peter']
    ['Tom:Mary:Peter']
    ['', 'Tom', 'Mary', 'Peter']
    
    5、join
    t = 'Tom', 'Mary', 'Peter'
    s = ['Tom', 'Mary', 'Peter']  #列表里元素必须都是str类型
    t2 = '+'.join(t)
    s2 = ':'.join(s)
    print(t2)
    print(s2)
    
    

    实例输出结果:

    Tom+Mary+Peter
    Tom:Mary:Peter
    
    
    6、count
    s = 'abcdefgab'
    s1 = s.count('a')
    s2 = len(s)
    print(s1)
    print(s2)
    
    

    实例输出结果:

    2
    9
    
    
    7、format
    msg = '我叫{},今年{}岁,性别{}!!!'.format('Tom','22','男')  #第一种用法
    msg2 = '我叫{0},今年{1}岁,性别{2},我依然叫{0}!!!'.format('Tom','22','男') #第二种用法
    msg3 = '我叫{name},今年{age}岁,性别{sex}!!!'.format(name='Tom',sex='男',age=22) #第三种用法
    print(msg)
    print((msg2))
    
    

    实例运行结果:

    我叫Tom,今年22岁,性别男!!!
    我叫Tom,今年22岁,性别男,我依然叫Tom!!!
    我叫Tom,今年22岁,性别男!!!
    
    
    8、is系列
    name = 'Tom123'
    c = 'abcd'
    num = '123'
    print(name.isalnum())     #字符串由字母或者数字组成
    print(c.isalpha())        #字符串只由字母组成
    print(num.isdecimal())    #字符串只由十进制组成
    print(num.isnumeric())    #字符串只由十进制组成
    
    

    实例输出结果:

    True
    True
    True
    True
    
    
    9、upper lower
    s = 'abcCDE'
    print(s.upper())     #字符串所有字符转大写
    print(s.lower())     #字符串所有字符转小写
    
    

    实例输出结果:

    ABCCDE
    abccde
    
    

    10、格式化输出print

    s = '321'
    for i in s:      #占位符,以下两个print打印结果一样
        print('倒计时{}秒'.format(i))  #print('倒计时%s秒'%i)
    print('出发!')
    
    

    实例输出结果:

    倒计时3秒
    倒计时2秒
    倒计时1秒
    出发!
    
    

    (三)、循环

    1、while
    s = 'lichuanlei'
    count = 0
    while count < len(s):
        print(s[count])
        count+=1
    
    

    实例输出结果:

    l
    i
    c
    h
    u
    a
    n
    l
    e
    i
    
    
    2、for 变量 in iterable

    eg1:

    s = 'lichuanlei'   #可迭代对象
    for n in s:
        print(n)
    
    

    实例输出结果:

    l
    i
    c
    h
    u
    a
    n
    l
    e
    i
    
    

    eg2:

    s = 'lichuanlei'
    for i in s:
        print(i)
        if i == 'a':
            break
    
    

    实例输出结果:

    l
    i
    c
    h
    u
    a
    
    

    eg3:

    #实现多个数相加
    result = 0
    num = input('请输入内容(格式如:1+2+……):')
    lst1 = num.split('+')
    for i in lst1:
        result = result+int(i)
    print(result)
    
    

    eg4:

    #判断字符串中有多少个数字
    content = input('请输入:')
    result = 0
    for i in content:
        if i.isdecimal():
            result +=1
    print('共有%s个数字'%result)
    
    

    (四)列表

    1、增加元素

    1.1 append:追加

    #append : 追加
    lst1 = ['Tom','Peter','Jerry']
    while 1:
        name = input('请输入员工姓名(按Q或q退出):')
        if name.upper() == 'Q':
            break
        lst1.append(name)
    print(lst1)
    
    

    1.2 insert:插入式增加

    # 插入式增加元素
    lst1 = ['Tom','Peter','Jerry']
    lst1.insert(1,'Mary')
    print(lst1)
    
    

    实例运行结果:

    ['Tom', 'Mary', 'Peter', 'Jerry']
    
    

    1.3 extend:迭代着追加

    #迭代着追加
    lst1 = ['Tom','Peter','Jerry']
    lst1.extend('ABC')       #此次增加‘A’,‘B’,‘C’三个元素
    lst1.extend(['ABC','Work','Job'])   #  此次又增加'ABC','Work','Job'三个元素
    print(lst1)
    
    

    实例运行结果:

    ['Tom', 'Peter', 'Jerry', 'A', 'B', 'C', 'ABC', 'Work', 'Job']
    
    
    2、删除元素

    2.1 pop:按照索引删除

    lst1 = ['Tom','Peter','Jerry','Tom','Mary']
    lst2 = ['Tom','Peter','Jerry']
    pop1 = lst1.pop(-2)   #按照索引删除(返回的是删除的元素)
    pop2 = lst2.pop()   #默认删除末尾元素(返回的是删除的元素)
    print(lst1,pop1)
    print(lst2,pop2)
    
    

    实例运行结果:

    ['Tom', 'Peter', 'Jerry', 'Mary'] Tom
    lst2 = ['Tom','Peter'] Jerry
    
    

    2.2 remove:按照指定元素删除

    lst1 = ['Tom','Peter','Jerry','Tom','Mary']
    lst1.remove('Tom')     #按照指定元素删除,若有重名元素,默认从左删除第一个元素
    print(lst1)
    
    

    实例运行结果:

    ['Peter', 'Jerry', 'Tom', 'Mary']
    
    

    2.3 clear :清空

    lst1 = ['Tom','Peter','Jerry','Tom','Mary']
    lst1.clear()  #清空
    
    

    2.4 del

    lst1 = ['Tom','Peter','Jerry','Mary']
    lst2 = ['Tom','Peter','Jerry','Tom','Mary']
    del lst1[-2]      #按照索引删除元素
    del lst2[::2]     #按照切片步长删除元素
    print(lst1)
    print(lst2)
    
    

    实例运行结果:

    ['Tom', 'Peter', 'Mary']
    ['Peter', 'Tom']
    
    
    3、更改元素
    lst1 = ['Tom','Peter','Jerry','Mary']
    lst2 = ['Tom','Peter','Jerry','Tom','Mary']
    lst3 = ['Tom','Peter','Jerry','Tom']
    lst1[1] = '孙悟空'     #按照索引更改元素
    lst2[2:] = 'ABCDEFGH'   #按照切片更改,超长增加会依次加在后
    lst3[::2] = ['RR','YY']  #按照切片(步长)更改,数量必须一一对应
    print(lst1)
    print(lst2)
    print(lst3)
    
    

    实例运行结果:

    ['Tom', '孙悟空', 'Jerry', 'Mary']
    ['Tom', 'Peter', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
    ['RR', 'Peter', 'YY', 'Tom']
    
    
    4、查询
    lst1 = ['Tom','Peter','Jerry','Mary']
    lst2 = ['Tom','Peter','Jerry','Tom','Mary']
    for i in lst1:         #遍历所有元素
        print(i)
    
    print(lst2[-1])        #按照索引查询元素
    print(lst2[::2])       #按切片(步长)查询元素
    
    

    实例运行结果:

    Tom
    Peter
    Jerry
    Mary
    Mary
    ['Tom', 'Jerry', 'Mary']
    
    
    5、嵌套

    eg1:

    lst1 = [1,2,'taibai',[1,'alex',3]]
    lst1[2] = lst1[2].upper()
    lst1[3].append('老男孩教育')
    lst1[-1][1] = lst1[-1][1]+'sb'
    print(lst1)
    
    

    实例运行结果:

    [1, 2, 'TAIBAI', [1, 'alexsb', 3, '老男孩教育']]
    
    

    eg2:

    lst1 = [2,30,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lst1[3][2][1][0] = lst1[3][2][1][0].upper()   #将列表lst1中的‘tt’变成大写                
    lst1[3][2][1][1] = '100'          #将列表中的数字3变成字符串‘100’
    lst1[3][2][1][2] = 101            #将列表中的字符串‘1’变成数字101
    print(lst1)
    
    

    实例运行结果:

    [2, 30, 'k', ['qwe', 20, ['k1', ['TT', '100', 101]], 89], 'ab', 'adv']
    
    

    eg1:

    #判断一句话是否是回文
    content = input('请输入:')
    if content == content[-1::-1]:
        print('%s 是回文!'%content)
    else:
        print('%s 不是回文!'%content)
    
    

    (五)元组

    c = 1,3
    a,b = c
    print(a,b)
    a,b = b,a     #交换
    print(a,b)
    
    

    实例运行结果:

    1 3
    3 1
    
    

    (六)range

    for i in range(1,11): print(i,end='  ')  #打印1……10
    print('
    ')
    for i in range(1,11,2): print(i,end='  ')
    print('
    ')
    for i in range(10,0,-1): print(i,end='  ')
    
    

    实例运行结果:

    1  2  3  4  5  6  7  8  9  10  
    
    1  3  5  7  9  
    
    10  9  8  7  6  5  4  3  2  1 
    
    
    lst1 = range(5)
    print(lst1)
    print(lst1[1:3])
    print(lst1[-1])
    for i in range(1,5,-1):
        print(i)     #不打印任何内容
    
    

    实例运行结果:

    range(0, 5)
    range(1, 3)
    4
    
    

    (七)字典

    1、创建
    #创建字典的方法:
    dic = dict((('one',1),('two',2),('three',3)))    #第一种
    dic2 = dict(one=1,two=2,three=3)        #第二种
    dic3 = dict({'one':1,'two':2,'three':3})    #第三种
    print(dic,'
    ',dic2,'
    ',dic3)
    
    

    实例运行结果:

    {'one': 1, 'two': 2, 'three': 3}  
     {'one': 1, 'two': 2, 'three': 3} 
     {'one': 1, 'two': 2, 'three': 3}
    
    
    2、增

    eg1:

    dic = {'name':'孙悟空','age':26}
    dic['sex'] = '男'    #增加
    dic['age'] = 28     #有则改之无则增加
    print(dic)
    
    

    实例运行结果:

    {'name': '孙悟空', 'age': 28, 'sex': '男'}
    
    

    eg2:

    dic = {'name':'孙悟空','age':26}
    dic['sex'] = '男'    #增加
    dic['age'] = 28     #有则改之无则增加
    dic.setdefault('hobby')     #给键设置默认值:None空
    dic.setdefault('hobby2','跑步')
    dic.setdefault('age',30)    #有则不变,无则增加
    print(dic)
    
    

    实例运行结果::

    {'name': '孙悟空', 'age': 28, 'sex': '男', 'hobby': None, 'hobby2': '跑步'}
    
    
    3、删
    dic = {'name':'孙悟空','age':26,'sex':'男'}
    dic2 = {'name':'孙悟空','age':26}
    print(dic.pop('age'))     #按照键删除键值对,有返回值
    print(dic.pop('hobby','没有此键'))   #设置pop第二个参数时则有无键值对都不会报错
    del dic['name']         #按键删除指定元素,但是没有返回值
    dic2.clear()     #清空键值对内容
    print(dic)
    print(dic2)
    
    

    实例运行结果:

    26
    没有此键
    {'sex': '男'}
    {}
    
    
    4、改
    dic = {'name':'孙悟空','age':26}
    dic['age'] = 30
    print(dic)
    
    

    实例运行结果:

    {'name': '孙悟空', 'age': 30}
    
    
    5、查
    dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑','爬']}
    print(dic.get('hobby_list'))
    print(dic.get('hobby_list2'))
    print(dic.get('hobby_list2','查无此键'))  #可以设置返回值
    print(dic['name'])
    
    

    实例运行结果:

    ['打球', '跑步', '爬山']
    None
    查无此键
    孙悟空
    
    
    6、keys()
    dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']}
    print(list(dic.keys()))     #可将键转换成列表
    for key in dic:   #另一种写法:for key in dic.keys
        print(key)    #遍历字典dic的键
    
    

    实例运行结果:

    ['name', 'age', 'hobby_list']
    name
    age
    hobby_list
    
    
    7、values()
    dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']}
    print(list(dic.values()))     #可将值转换成列表
    for value in dic.values():
        print(value)    #遍历字典dic的值
    
    

    实例运行结果:

    ['孙悟空', 26, ['打球', '跑步', '爬山']]
    孙悟空
    26
    ['打球', '跑步', '爬山']
    
    
    8、items()
    dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']}
    for value in dic.items():
        print(value)    #遍历字典dic的项目后,是变成元组
    for key,value in dic.items():    #利用元组拆包
        print(key,value)    #遍历字典dic的项目后
    
    

    实例运行结果:

    ('name', '孙悟空')
    ('age', 26)
    ('hobby_list', ['打球', '跑步', '爬山'])
    name 孙悟空
    age 26
    hobby_list ['打球', '跑步', '爬山']
    
    

    eg:

    1、增加键值对:'k4':'v4' ; 2、将'k1'值改成’alex'

    3、将k3值加一个44; 4、将K3键第一个位置加个数字18

    dic = {'k1':'v1','k2':'v2','k3':[11,22,33]}
    dic.setdefault('k4','v4')     #增加键值对:'k4':'v4'
    dic['k1'] = 'alex'        #将'k1'值改成’alex'
    dic['k3'].append(44)     #将k3值加一个44
    dic['k3'].insert(0,18)   #将K3键第一个位置加个数字18
    print(dic)
    
    

    实例运行结果:

    {'k1': 'alex', 'k2': 'v2', 'k3': [18, 11, 22, 33, 44], 'k4': 'v4'}
    
    
    9、字典的嵌套
    #1、获取汪典的名字
    #2、获取这个字典:{'name':'张怡','age':38}
    #3、获取汪典妻子的名字
    #4、获取汪典第三个孩子的名字
    dic = {
        'name':'汪典',
        'age':48,
        'wife':[{'name':'张怡','age':38},],
        'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
    }
    print(dic.get('name'))
    print(dic['wife'][0])
    print(dic['wife'][0]['name'])
    print(dic['children']['girl_three'])
    
    
    10、update
    dic = {'name':'Tom','age':28}
    dic.update(hobby='运动',hight='175')     #无则增加
    dic.update(name='Marry')       #有则更改
    dic.update([(1,'one'),(2,'two'),(3,'three')])
    print(dic)
    
    

    (八)练习题

    eg1:
    lst1 = []
    lst2 = []
    for i in list(range(100,9,-1)):   #100~10,倒序将所有偶数添加一个新列表中
        if i%2==0:
            lst1.append(i)
    print('100-10偶数:',lst1)
    for i in lst1:
        if i%4 ==0:
            lst2.append(i)
    print('100-10被4整除的数:',lst2)
    
    
    eg2:移除每个元素的空格,并找出以‘A’或者‘a’开头,并以‘c’结尾的所有元素
    #查找列表li中的元素,移除每个元素的空格,并找出以‘A’或者‘a’开头,并以‘c’结尾的所有元素,
    #并添加到一个新列表中,最后循环打印这个列表
    li = ['TaiBai  ','alexC','AbC','egon','  riTiAn','WuSir  ','  aqc',]
    new_li = []
    for i in li:
        new_i = i.strip()
        #if new_i.upper().startswith('A') and new_i.endswith('c'):  #第一种方法
        if new_i[0].upper() == 'A' and new_i[-1] == 'c':       #第二种方法
            new_li.append(new_i)
    for i in new_li:
        print(i)   #返回值 aqc
    
    
    eg3:敏感词语过滤程序
    #开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容包含特殊的字符:
    #敏感词列表 li = ['苍老师','东京热','武藤兰','波多野结衣']
    #则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换成***),并添加到一个列表中;
    #如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
    
    li = ['苍老师','东京热','武藤兰','波多野结衣']
    comment_list = []
    comment = input('请输入您的评论:')    #fdagadfeaewr苍老师fdaevnk苍老师fdaie武藤兰ewd32波多野结衣fdsfascf
    for word in li:
        if word in comment:
            comment = comment.replace(word,'*'*len(word))
    comment_list.append(comment)
    print(comment_list)
    
    
    eg4:循环打印嵌套列表中元素
    #循环打印列表中的的每个字符串,包含嵌套列表中的字符串
    li = ['TaiBai','alexC',['AbC','egon','riTiAn'],'WuSir','aqc',]
    for i in li:
        if type(i) == list:
            for j in i:
                print(j)
        print(i)
    
    
    eg5:将列表中的元素以“_”间隔
    #将列表中的元素以“_”间隔
    users = ['张三','李四','王五',666,'Tom','周荣',888]
    s = ''
    for index in range(len(users)):
        if index == 0:
            s = s+users[index]
        else:
            s = s+'_'+str(users[index])
    print(s)   #返回结果:张三_李四_王五_666_Tom_周荣_888
    
    
    eg6:将字符串变成字典
    #将'k1:1|k2:2|k3:3|k4:4|k5:5'变成{k1:1,k2:2,k3:3,k4:4,k5:5}
    msg = 'k1:1|k2:2|k3:3|k4:4|k5:5'
    dic = {}
    cc = msg.split('|')
    for i in cc:
        key,value = i.split(':')
        dic[key] = int(value)
    print(dic)
    
    

    (九)集合

    1、说明:

    集合 set.容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合是无需的。{}

    • 集合的作用:
      1. 列表的去重。
      2. 关系测试:交集,并集,差集,……
    2、创建:
    set1 = {1,3,'Tom','Marry',False}
    print(set1)
    print({},type({}))    #空字典
    set2 = set()         #空集合
    print(set2,type(set2))
    
    
    3、增
    set1 = {1,3,'Tom','Marry',False}
    set1.add('Jerry')     #添加一个元素
    print(set1)
    set1.update('ABCD')    #迭代着添加每一个元素
    print(set1)
    
    

    实例运行结果:

    {False, 1, 'Jerry', 3, 'Tom', 'Marry'}
    {False, 1, 'Jerry', 3, 'A', 'Tom', 'Marry', 'C', 'B', 'D'}
    
    
    4、删
    set1 = {1,3,'Tom','Marry',False}
    set1.remove('Tom')     #按名称删除
    set1.pop()       #随机删除
    #set1.clear()   #清空集合
    #del set1      #删除元素
    print(set1)
    
    
    5、其他操作:
    5.1 交集。(& 或 intersection)
    set1 = {11,22,33,44,55}
    set2 = {33,44,55,66,77,88}
    print(set1 & set2)            #{33, 44, 55}
    print(set1.intersection(set2))  #{33, 44, 55
    
    
    5.2 并集。 (| 或 union)
    set1 = {11,22,33,44,55}
    set2 = {33,44,55,66,77,88}
    print(set1 | set2)   #{33, 66, 11, 44, 77, 22, 55, 88}
    print(set1.union(set2))  #{33, 66, 11, 44, 77, 22, 55, 88}
    
    
    5.3 差集。 (- 或 difference)
    set1 = {11,22,33,44,55}
    set2 = {33,44,55,66,77,88}
    print(set1 - set2)   #{11, 22}
    print(set1.difference(set2))  #{11, 22}
    
    
    5.4 反差集。(^ 或 symmetric_difference)
    set1 = {11,22,33,44,55}
    set2 = {33,44,55,66,77,88}
    print(set1 ^ set2)   #{66, 22, 88, 11, 77}
    print(set1.symmetric_difference(set2))  #{66, 22, 88, 11, 77}
    
    5.5 子集。(< 或 issubset)
    set1 = {11,22,33,44,55}
    set2 = {11,22,33,44,55,66,77,88,99}
    print(set1 < set2)
    print(set1.issubset(set2))  #这两个相同,都是说明set1是set2子集。
    
    5.6 超集。(> 或 issuperset)
    set1 = {11,22,33,44,55}
    set2 = {11,22,33,44,55,66,77,88,99}
    print(set2 > set1)
    print(set2.issuperset(set1))   ##这两个相同,都是说明set2是set1超集。
    

    eg1 :列表去重

    L1 = [1,2,3,2,3,4,4,5,5,11,11,13,13,44,44]    #列表去重
    L1 = set(L1)
    print(L1)
    
  • 相关阅读:
    汉诺塔
    给出一个字符串,要求插入最少的字符,使得原字符串为一个回文串
    最长回文子串
    回文数 第N个回文数
    屋子里有1到100号100盏关闭的灯
    无头结点的单链表删除一个中间结点
    单链表逆转
    编程之美2.21 加法
    在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对
    斐波那契
  • 原文地址:https://www.cnblogs.com/lichuanlei/p/12325642.html
Copyright © 2020-2023  润新知