• python基础数据类型二


    一、list

      1、list基本知识

     

    li = ['alex',123,True,(1,23,34,'wusir'),[2412,234,'xiaomin'],{'name':'alex'}]
    #索引、切片、步长
    print(li[0]) #alex
    print(li[2]) #True
    print(li[:4]) #['alex', 123, True, (1, 23, 34, 'wusir')]
    print(li[3:1:-1]) #[(1, 23, 34, 'wusir'), True]
    li = [1,'a','b','a',2,3,'老男孩']
    #
    #append 在列表最后加入元素,结果没有返回值,直接修改列表
    li.append('alex')
    print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex']
    li.append([1,2,3])
    print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
    #insert 插入 可以按索引插入
    li.insert(2,'sb')
    print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]]
    #extend 迭代添加,到最后
    li.extend('214')
    print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4']
    li.extend([1,2,'ab'])
    print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
    #
    #remove 按元素删除
    li.remove('a')
    print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab']
    #pop 按索引删除,默认删除最后一个,返回值是删除的元素
    print(li.pop()) #ab
    print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
    print(li.pop(2)) #b
    print(li) #[1, 'sb', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2]
    #clear 清空列表内容
    li.clear()
    print(li) #[]
    #del 删除列表或者切片删除
    li = [1,2,4,6]
    # del li
    print(li) #列表不存在了
    li = [1,'a','b','a',2,3,'老男孩']
    #切片删除,可以按步长删除
    del li[3:] #[1, 'a', 'b']
    li = [1,'a','b','a',2,3,'老男孩']
    del li[:-3:2]
    print(li) #['a', 'a', 2, 3, '老男孩']
    #改 按照索引改
    li = [1,'a','b','a',2,3,'老男孩']
    li[0] = 'abc'
    print(li) #['abc', 'a', 'b', 'a', 2, 3, '老男孩']
    li[0] = ['abc',123,'eta']
    print(li) #[['abc', 123, 'eta'], 'a', 'b', 'a', 2, 3, '老男孩']
    #按照切片去改
    li[:3] = 'sb'
    print(li) #['s', 'b', 'a', 2, 3, '老男孩']
    li[:2] = ['sb']
    print(li) #['sb', 'a', 2, 3, '老男孩']
    #
    #查看,切片步长查看
    print(li[0]) #sb
    print(li[:2]) #['sb', 'a']
    print(li[::2]) #['sb', 2, '老男孩']
    # for 循环
    for i in li:
        print(i)
    #sb
    #a
    #2
    #3
    
    #其他操作方法
    #sort从小到大,正向排序
    li = [23,21,43,1,54]
    li.sort()
    print(li) #[1, 21, 23, 43, 54]
    #从大到小,反向排序
    li.sort(reverse =True)
    print(li) #[54, 43, 23, 21, 1]
    #翻转
    li.reverse() #[1, 21, 23, 43, 54]
    #长度 len
    print(len(li)) #5
    print(li) #[1, 21, 23, 43, 54]
    #count
    li = ['t',2342,'t','safs','sadfast','eawt']
    print(li.count('t')) #2
    #index 通过元素找索引
    print(li.index('t')) #0
    #str
    #join用字符串做一个连接符
    #连接可迭代对象中的每一个元素,形成一个新的字符串
    s = 'xxoo'.join('sb')
    print(s) #sxxoob
    
    #split str ---> list
    # s1 = 'wusie taibai'
    #print(s1.split())
    #join list --> str
    l1 = ['wusir','taibai']
    print(' '.join(l1)) #wusir taibai
    print(''.join(l1)) #wusirtaibai

      2、list嵌套

    li = [1,2,'alex',['100','wusir',99,[]],22]
    # 1,将alex 变成首字母大写的Alex
    # capitalize()
    # li[2] = 'Alex'
    # print(li)
    # print(li[2].capitalize())
    li[2] = li[2].capitalize()
    print(li)
    # 2,将wusir变成全部大写的wusir 放到原处
    # print(li[3])
    # l2 = li[3]
    # print(l2[1].upper())
    # li[3][1] = l2[1].upper()
    # print(li)
    li[3][1] = li[3][1].upper()
    print(li)
    # 3,将99加1变成100,放回原处
    li[3][2] = li[3][2] + 1
    print(li)

    二、元组(tuple)

    a = (1,2,'alex','oldboy')
    print(a[:2]) #(1, 2)
    print(a[2]) #alex
    for i in a:
        print(i)
    # 1
    # 2
    # alex
    # oldboy
    #儿子不能改,孙子可能改
    b = (1,2,'alex',[1,'taibai'],(1,2,3),'oldboy')
    b[3].append('2342')
    print(b) #(1, 2, 'alex', [1, 'taibai', '2342'], (1, 2, 3), 'oldboy')
    print(len(b)) #6
    print(b.count(1)) #1
    print(b.index('oldboy')) #5

    三、range

      range相当于一个计数器

    for i in range(100): # [0,1,2,。。。99]
        print(i)
    for i in range(0,10,2):  # [0,2,4,6,8]
        print(i)
    for i in range(10,0,-1):  # [10,9,8....1]
        print(i)

    四、思考

    1,计算用户输入的内容中有几个整数(连续数字算一个)。

    counte = 0
    number = 0
    content = input('请输入内容:')
    if content[0].isdigit() and content[-1].isdigit():
        counte += 1
    for i in content:
        if i.isdigit():
            for a in content[number:]:
                if content[number-1].isalpha():
                    counte += 1
                    break
                else:break
        number += 1
    print(counte)
    content = input('请输入内容:').strip()
    ls = []
    for i in content:
        if i.isalpha():
            content = content.replace(i, ' ', 1)
    content = content.strip().split(' ')
    for k in content:
        if k.isdigit():
            ls.append(k)
    print(len(ls))

    2、实现一个整数加法计算器(不定个数相加):

    如:content = input(‘请输入内容:’)  # 如用户输入:5+9+10或5+ 9或5 + 9+5+3,然后进行分割再进行计算。

    content = input('请输入内容:')
    number = content.split('+')
    sum = 0
    for i in number:
        sum += int(i)
    print(sum)

    3、分别输出li = [1,2,3,['alex','wusir','老男孩'],4]里面的每个元素(包括2级列表)

    li = [1,2,3,['alex','wusir','老男孩'],4]
    for i in li:
        a = i
        if type(i) == list:
            for t in a:
               print(t)
            continue
        print(i)

    五、练习题

    1,写代码,有如下列表,按照要求实现每一个功能

    li = [‘alex’,’wusir’,’eric’,’rain’,‘alex’]

    1)计算列表的长度并输出

    2)列表中追加元素’seven’,并输出添加后的列表

    3)请在列表的第1个位置插入元素’Tony’,并输出添加后的列表

    4)请修改列表第2个位置的元素为’Kelly’,并输出修改后的列表

    5)请将列表l2=[1,’a’,3,4,’heart’]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

    6)请将字符串s = ‘qwert’的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

    7)请删除列表中的元素’eric’,并输出添加后的列表

    8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表

    9)请删除列表中的第2至4个元素,并输出删除元素后的列表

    10)请将列表所有得元素反转,并输出反转后的列表

    11)请计算出‘alex’元素在列表li中出现的次数,并输出该次数。

    #1
    li = ['alex','wusir','eric','rain','alex']
    print(len(li))
    #2
    li.append('seven')
    print(li)
    #3
    li.insert(0,'Tony')
    print(li)
    #4
    li[1] = 'Kelly'
    print(li)
    #5
    li.extend([1,'a',3,4,'heart'])
    print(li)
    #6
    li.extend('qwert')
    print(li)
    #7
    li.remove('eric')
    print(li)
    #8
    print(li.pop(1))
    print(li)
    #9
    del li[1:4]
    print(li)
    #10
    li.reverse()
    print(li)
    #11
    print(li.count('alex'))

    2,写代码,有如下列表,利用切片实现每一个功能

    li = [1,3,2,’a’,4,’b’,5,’c’]

    1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]

    2)通过对li列表的切片形成新的列表l2,l2 = [’a’,4,’b’]

    3)通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5]

    4)通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’]

    5)通过对li列表的切片形成新的列表l5,l5 = [‘c’]

    6)通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3]

    #1
    li = [1,3,2,'a',4,'b',5,'c']
    l1 = li[:3]
    print(l1)
    #2
    l2 = li[3:6]
    print(l2)
    #3
    l3 = li[::2]
    print(l3)
    #4
    l4 = li[1:-1:2]
    print(l4)
    #5
    l5 = li[-1:]
    print(l5)
    #6
    l6 = li[-3::-2]
    print(l6)

    3,写代码,有如下列表,按照要求实现每一个功能。

    lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’]

    1)将列表lis中的’tt’变成大写(用两种方式)。

    2)将列表中的数字3变成字符串’100’(用两种方式)。

    3)将列表中的字符串’1’变成数字101(用两种方式)。

    #1
    #第一种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[3][2][1][0] = 'TT'
    print(lis)
    #第二种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[3][2][1][0] = lis[3][2][1][0].upper()
    print(lis)
    #2
    #第一种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[1] = '100'
    lis[3][2][1][1] = '100'
    print(lis)
    #第二种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[1] = str(lis[1]+97)
    lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
    print(lis)
    #3
    #第一种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[3][2][1][2] = int('10' + lis[3][2][1][2])
    print(lis)
    #第二种
    lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
    lis[3][2][1][2] = 101
    print(lis)

    4,请用代码实现:

           li = [‘alex’,’eric’,’rain’]

    利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"

    li = ['alex','eric','rain']
    str_list = "_".join(li)
    print(str_list)

    5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

    li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’  aqc’]

    li = ['taibai ','alexC','AbC ','egon', ' Ritian',' Wusir','  aqc']
    l1 = []
    count = 0
    for i in li:
        if i.strip().startswith('a') and i.strip().endswith('c'):
            l1.append(li[count].strip())
        elif i.strip().startswith('A') and i.strip().endswith('c'):
            l1.append(li[count].strip())
        count += 1
    print(l1)

    6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:

    敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]

    则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

    li = ["苍老师","东京热","武藤兰","波多野结衣"]
    l1=[]
    content = input("请您输入相关内容:")
    for i in li:
        if i in content:
            content = content.replace(i,"***")
    l1.append(content)
    print(l1)
    print(content)

    7,有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’]

    循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。

    我想要的结果是(用两种方法实现,其中一种用range做):

    1

    3

    4

    ‘alex’

    3

    7,

    8

    ‘taibai’

    5

    ritian

    #第一种
    li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian']
    for i in li:
        if type(i) == list:
            for h in i:
                print(h)
        else:print(i)
    # 第二种
    li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian']
    for i in range(len(li)):
        if type(li[i]) == list:
            for h in range(len(li[i])):
                print(li[i][h])
        else:print(li[i])
  • 相关阅读:
    LeeCode 1497. 检查数组对是否可以被 k 整除
    LeetCode 1503. 所有蚂蚁掉下来前的最后一刻
    双指针算法
    最短送餐路程计算, 美团笔试题2020
    最短路算法dijkstra算法
    寻找最小子字符串, 美团笔试题2020
    最大矩形, 统计全1子矩阵
    拼凑硬币, 腾讯
    7月15日
    7月14日
  • 原文地址:https://www.cnblogs.com/qiujie/p/8618960.html
Copyright © 2020-2023  润新知