列表

作者: pubalabala | 来源:发表于2018-07-20 18:48 被阅读0次

    一 输入输出函数

    输出函数: print()函数

    1. 默认每一个print函数,输出完内容后会输出一个换行符
    2. 一个print函数输出多个内容的时候,内容之间使用空格隔开的
    3. 内容后边加end=''来设置结束标志(默认是'\n')
    4. 通过设置sep的值来设置多个内容之间的间隔符(默认是' ')
    print()('aaa', 100, end='\n', sep=',')
    print('bbb')
    

    输入函数: input()函数

    1. input()函数可以接收从控制台输入的内容(以回车未结束标志)
    2. input函数会阻塞线程,程序执行到input的时候会停下来,等待用户的输入,输入完成后才会接着执行后面的内容
    3. 在python3中用户接受到的数据是以字符串的形式返回的
    name = input('请输入一个整数:')
    print(name,name.type())
    

    二 列表

    列表(list):用来存储多个数据的一种数据类型,里面存储的单个数据称为元素
    序列:容器类型数据(列表,字典,元组,集合)

    • 特点:

    1. 有序的
    2. 可变的(容器中的内容的数量和值可变)
    3. 元素可以是任何类型的数据
    • 列表的值:

    用[]将列表中的元素括起来,多个元素之间用逗号隔开.[]:空列表

    转换:只有序列类型的数据可以转换成列表li=list(被转换的序列)
    生成式:li=list(iforiinrange(100))

    1. 怎么声明一个列表
    list1=[]#创建一个空的列表
    print(type(list1))
    
    list2=[1,12.9,'abc',[1,2,3],{'x':3,'y':'Y'}]
    print(list2,type(list2))
    

    生成式

    li=list(i for i in range(10))
    print(li)
    li=list(i for i in range(10) if i % 3 == 0)
    print(li)
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 3, 6, 9]
    
    1. 获取列表元素列表中的元素都对应一个小标:0len-1;-1-len
      a. 获取单个元素:列表名[下标]下标不能月越界
    names=['faker','uzi','ClearLove','fhgf']
    print(names[2],names[-1])
    

    b. 获取部分元素(切片)
    列表名[起始下标:结束下标]
    左闭右开返回的仍是列表

    print(names[1:3],names[-3:-1])

    列表名[起始下标:结束下标:步进]
    左闭右开返回的仍是列表

    print(names[0:4:2])
    print(names[::-1])
    

    起始下标和结束下标都可以缺省:
    如果步进是正数,起始下标缺省就是从第一个元素开始获取;
    如果步进为负数就是从最后一个元素开始获取
    结束下标缺省,步进是正数,获取最后一个元素,步进是负数,从后往前获取到第一个元素

    c. 一个一个的获取列表所有的元素(遍历列表)

    foriinnames:
    print(i)
    
    i=0
    whilei<len(names):
    print(names[i])
    i+=1
    
    1. 添加列表元素
      a. 列表名.append(元素)
      在列表的末尾添加一个元素
    skills=[]
    print(skills)
    skills.append('炁体源流')
    skills.append('拘灵遣将')
    print(skills)
    

    b. insert函数
    在列表指定下标的前面插入一个元素
    这里的下标可以越界,如果越界就会插入在列表的最前面或者最后面

    skills.insert(1,'通天箓')
    print(skills)
    skills.insert(-1,'明魂术')
    print(skills)
    skills.insert(6,'六仙库贼')
    print(skills)
    

    c. +
    列表1+列表2
    将列表2中的元素和列表2的元素合并返回一个新的列表

    lis = skills + names
    print(lis)
    

    例:从控制台输入10个学生的成绩,然后保存在一个列表中

    scores=[]
    for i in range(0,10):
        temp=float(input('请输入第%d个学生的成绩:'%(i+1)))
        while(temp>100ortemp<0):
            temp=float(input('请输入有效的成绩:'))
        scores.append(temp)
    print(scores)
    

    运行结果:

    请输入第1个学生的成绩:54
    请输入第2个学生的成绩:543
    请输入有效的成绩:54
    请输入第3个学生的成绩:67
    请输入第4个学生的成绩:2
    请输入第5个学生的成绩:656
    请输入有效的成绩:45
    请输入第6个学生的成绩:76
    请输入第7个学生的成绩:867
    请输入有效的成绩:65
    请输入第8个学生的成绩:87
    请输入第9个学生的成绩:34
    请输入第10个学生的成绩:97
    [54.0, 54.0, 67.0, 2.0, 45.0, 76.0, 65.0, 87.0, 34.0, 97.0]
    
    1. 删除列表元素
      a. del语句
      del可以删除任何数据
      del列表名[下标]:删除列表中指定下标的元素下标不能越界
    films=['肖生克','阿甘正传','小翟总','老翟总','肖生克']
    del films[1]
    print(films)
    

    b. remove方法
    列表名.remove(元素):删除列表中的指定元素
    如果有多个相同元素,只删除第一个,如果要删除的元素不在列表中会报错

    films.remove('肖生克')
    print(films)
    

    c. 列表名.pop(下标)
    弹出列表中指定下标的元素(如果下标缺省则弹出最后一个元素)

    films_poped=[films.pop()]
    print(films,films_poped)
    films_poped.append(films.pop(0))
    print(films,films_poped)
    

    练习:scores=[23,45,45,78,32,90,89,1],删除所有小于60分的成绩

    scores=[23,45,45,78,32,90,89,1]
    for i in scores[:]:
        if i<60:
            scores.remove(i)
    print(scores)
    

    运行结果:

    [78, 90, 89]
    

    练习

    1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一个数字。例如2+22+222+2222+22222(此时共有5个数相
      加),⼏几个数相加有键盘控制。
    a = int(input('请输入0~9的任意数字:'))
    n = int(input('请输入运算数量:'))
    num = 0
    print('%d' % (a),end='',sep='')
    for i in range(0,n-1):
        temp = 0
        for x in range(0,i+2):
            temp += a * 10 ** x
        print(' + %d'%(temp),end='',sep='')
        num += temp
    print(' = %d'%(num+a))
    

    运行结果:

    请输入0~9的任意数字:3
    请输入运算数量:6
    3 + 33 + 333 + 3333 + 33333 + 333333 = 370368
    
    1. 打印图形1
      n = 4
      @
      @@
      @@@
      @@@@
      n = 5
      @
      @@
      @@@
      @@@@
      @@@@@
    n=int(input('请输入层数:'))
    for x in range(0,n):
        print('@'*(x+1))
    

    运行结果:

    请输入层数:5
    @
    @@
    @@@
    @@@@
    @@@@@
    
    1. 打印图形2
      n = 3
              @
          @@@
      @@@@@
      n == 4
                  @
              @@@
          @@@@@
      @@@@@@@
    n=int(input('请输入层数:'))
    for x in range(0,n):
        print(' '*(n-(2*x-1)//2-2) + '@'*(2*x+1))
    

    运行结果:

    请输入层数:5
        @
       @@@
      @@@@@
     @@@@@@@
    @@@@@@@@@
    
    
    1. 打印图形3
      n = 3
      @@@
      @@
      @
    n=int(input('请输入层数:'))
    for x in range(0,n):
        print('@'*(n-x))
    

    运行结果:

    请输入层数:5
    @@@@@
    @@@@
    @@@
    @@
    @
    
    
    1. 输⼊入两个正整数m和n,求其最⼤大公约数和最⼩小公倍数。
    print('求m和n的最大公约数和最小公倍数')
    m = int(input('请输入m的值:'))
    n = int(input('请输入n的值:'))
    li = []
    for x in range(1,min(m,n)+1):
        if m%x==0 and n%x==0:
            li.append(x)
    print('m和n的最大公约数是:%d'%(max(i for i in li)))
    i = max(m,n)
    while True:
        if i%m == 0 and i%n == 0:
            print('m和n的最小公倍数是:%d' % (i))
            break
        i+=1
    

    运行结果:

    求m和n的最大公约数和最小公倍数
    请输入m的值:6
    请输入n的值:12
    m和n的最大公约数是:6
    m和n的最小公倍数是:12
    
    1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数
    n = 1000
    li = []
    for x in range(1,n+1):
        count = 0
        for i in range(1,x):
            if x%i==0:
                count+=i
        if count==x:
            li.append(count)
    print('1000以内的所有完数:',li)
    

    运行结果:

    1000以内的所有完数: [6, 28, 496]
    
    1. 输出9*9⼝口诀
    for x in range(1,10):
        for i in range(0,x):
            print(x, '*', i+1, '=', x*(i+1), end='')
            print('\t',end='')
        print()
    

    运行结果:

    1 * 1 = 1   
    2 * 1 = 2   2 * 2 = 4   
    3 * 1 = 3   3 * 2 = 6   3 * 3 = 9   
    4 * 1 = 4   4 * 2 = 8   4 * 3 = 12  4 * 4 = 16  
    5 * 1 = 5   5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25  
    6 * 1 = 6   6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36  
    7 * 1 = 7   7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49  
    8 * 1 = 8   8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64  
    9 * 1 = 9   9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81  
    
    1. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
    n = input('请输入一个正整数:')
    for i in range(0,len(n)):
        if i<len(n)/2+1 and n[i]!=n[-1-i]:
            break
    if i>len(n)/2:
        print(n+'是回文数')
    else:
        print(n+'不是回文数')
    

    运行结果:

    请输入一个正整数:12322
    12322不是回文数
    
    请输入一个正整数:24642
    24642是回文数
    
    1. 打印图形(菱形)
      n = 4
                  @
              @@@
          @@@@@
      @@@@@@@
         @@@@@
            @@@
               @
    n=int(input('请输入层数:'))
    for x in range(1,n+1):
        print(' '*(n-(2*x-1)//2-1) + '@'*(2*x-1))
    for i in range(1,n):
        print(' '*i + '@'*(2*(n-i)-1))
    

    运行结果:

    请输入层数:5
        @
       @@@
      @@@@@
     @@@@@@@
    @@@@@@@@@
     @@@@@@@
      @@@@@
       @@@
        @
    
    1. 输⼊入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    string = input('请输入一个字符串:')
    apha = 0
    space = 0
    digit = 0
    elst = 0
    for i in string:
        if i.isalpha():
            apha += 1
        elif i.isspace():
            space += 1
        elif i.isdigit():
            digit += 1
        else:
            elst += 1
    print('此字符串长度为:%d, 英文字母有:%d个, 空格有%d个, 数字有%d个,'\
          ' 其他字符有%d个'%(len(string), apha, space, digit, elst))
    

    运行结果:

    请输入一个字符串:a B c D 465 #%$ 54  5435 AWDT#%#$%^FSDG45y
    此字符串长度为:42, 英文字母有:13个, 空格有9个, 数字有11个, 其他字符有9个
    

    列表作业

    1. 已知一个列表,求列表中心元素。
    li = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
    print('已知列表:',li)
    if len(li)%2 == 0:
        print('该列表的中心元素是:', li[len(li)//2-1],'和',li[len(li)//2])
    else:
        print('该列表的中心元素是:', li[len(li) // 2])
    

    运行结果:

    已知列表: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2]
    该列表的中心元素是: fasd
    
    1. 已知一个列表,求所有元素和。
    li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    count = 0
    for i in li:
        count+=i
    print('列表:',li,'\n所有元素的和为:%.2f'%(count))
    

    运行结果:

    列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
    所有元素的和为:52.10
    
    1. 已知⼀一个列列表,输出所有奇数下标元素。
    li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    print('列表:',li,'\n奇数下标的元素为:',end='')
    for i in range(0,len(li)):
        if i%2==0:
            print(li[i],end=' ')
    

    运行结果:

    列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
    奇数下标的元素为:3 5 5.3 2 6.7 
    
    1. 已知一个列表,输出所有元素中,值为奇数的。
    li = [3,4,5,5,5,3,2,12,6,5]
    print('列表:',li,'\n奇数元素为:',end='')
    for i in li:
        if i%2!=0:
            print(i,end=' ')
    

    运行结果:

    列表: [3, 4, 5, 5, 5, 3, 2, 12, 6, 5] 
    奇数元素为:3 5 5 5 3 5
    
    1. 已知一个列表,将所有元素乘二。
    li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    print('列表:',li)
    for i in range(0,len(li)):
        li[i]*=2
    print('该列表的元素乘2后:',li)
    

    运行结果:

    列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
    该列表的元素乘2后: [6, 8, 10, 10, 10.6, 6.8, 4, 24, 13.4, 11.4]
    
    1. 已知一个列表,将所有元素加到第一个元素中。
    li = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    print('列表:',li)
    li[0] = [li[0]]
    for i in range(1,len(li)):
        li[0].append(li[i])
    print('该列表的元素加到第一个元素中后:',li)
    

    运行结果:

    列表: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
    该列表的元素加到第一个元素中后: [[3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7], 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
    
    
    1. 已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。
    A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    B = []
    C = []
    for i in range(0,len(A)):
        if i%2 == 0:
            B.append(A[i])
        else:
            C.append(A[i])
    print('列表A:',A,'\n列表B:',B,'\n列表C:',C)
    

    运行结果:

    列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
    列表B: [3, 5, 5.3, 2, 6.7] 
    列表C: [4, 5, 3.4, 12, 5.7]
    
    1. 把A列表的前5个元素复制到B列表中。
    A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    B = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
    print('列表A:',A,'\n列表B:',B)
    for i in range(0,5):
        B.append(A[i])
    print('添加A中前五个元素后列表B:',B)
    

    运行结果:

    列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
    列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2]
    添加A中前五个元素后列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2, 3, 4, 5, 5, 5.3]
    
    1. 把1----36分别放入列表中,计算列表数组对角元素之和。6 * 6的列表
    li = [[1,2,3,4,5,6],
          [7,8,9,10,11,12],
          [13,14,15,16,17,18],
          [19,20,21,22,23,24],
          [25,26,27,28,29,30],
          [31,32,33,34,35,36]]
    print('对角元素之和为:%d'%(li[0][0]+li[0][5]+li[5][0]+li[5][5]))
    

    运行结果:

    对角元素之和为:74
    
    1. 有一个长度是10的列表,列表内有10个不重复的数字,要求按从大到小排序。
    A = [3,4,5,5.3,3.4,2,12,6.7,5.7]
    print('排序前:',A)
    for i in range(0,len(A)):
        for j in range(i+1,len(A)):
            if A[i]<A[j]:
                temp = A[i]
                A[i] = A[j]
                A[j] = temp
    print('排序后:',A)
    

    运行结果:

    排序前: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7]
    排序后: [12, 6.7, 5.7, 5.3, 5, 4, 3.4, 3, 2]
    
    1. 有一个长度是10的列表,要求删除某一个位置的元素
    A = [3,4,5,5.3,3.4,2,12,6.7,5.7,6]
    print('列表A:',A)
    i = int(input('请输入要删除的位置序号:'))
    A.pop(i-1)
    print('删除后的列表A:',A)
    

    运行结果:

    列表A: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7, 6]
    请输入要删除的位置序号:5
    删除后的列表A: [3, 4, 5, 5.3, 2, 12, 6.7, 5.7, 6]
    
    1. 有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置。
    A = [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
    print('列表A:',A)
    num = int(input('请输入要插入的数:'))
    for i in range(0,len(A)):
        if num<A[i]:
            A.insert(i,num)
            break
    print('插入该元素后的A列表:',A)
    

    运行结果:

    列表A: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
    请输入要插入的数:6
    插入该元素后的A列表: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6, 6.7, 12]
    
    1. 有一个长度是10的列表,数组内有10个人名,要求去掉重复的
    names = ['张三', '李四', '张三', '张三', '王五', '赵六', '张三', '小翟总', '李四']
    print('去重前的名字列表:',names)
    i = 0
    while i<len(names):
        j=i+1
        while j<len(names):
            if names[j] == names[i]:
                del names[j]
                j-=1
            j+=1
        i+=1
    print('去重后的名字列表:',names)
    

    运行结果:

    去重前的名字列表: ['张三', '李四', '张三', '张三', '王五', '赵六', '张三', '小翟总', '李四']
    去重后的名字列表: ['张三', '李四', '王五', '赵六', '小翟总']
    
    1. 把A列表的第三到第六位之间的元素删除。
    A = [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
    print('删除前的列表A:',A)
    for i in range(0,6-3):
        del A[3-1]
    print('删除3至6为后的列表A:',A)
    

    运行结果:

    删除前的列表A: [2, 3, 3.4, 4, 5, 5.3, 5.7, 6.7, 12]
    删除3至6为后的列表A: [2, 3, 5.3, 5.7, 6.7, 12]
    
    1. 已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值)。
    A = [3,4,5,5,5.3,3.4,2,12,6.7,5.7]
    B = ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf',2]
    C = A+B
    i = 0
    while i<len(C):
        j=i+1
        while j<len(C):
            if C[j] == C[i]:
                del C[j]
                j-=1
            j+=1
        i+=1
    print('列表A:',A,'\n列表B:',B,'\n列表C:',C)
    

    运行结果:

    列表A: [3, 4, 5, 5, 5.3, 3.4, 2, 12, 6.7, 5.7] 
    列表B: ['aaa', 'bbb', 3, '4', 'fasd', 7, 8, 'gfsgf', 2] 
    列表C: [3, 4, 5, 5.3, 3.4, 2, 12, 6.7, 5.7, 'aaa', 'bbb', '4', 'fasd', 7, 8, 'gfsgf']
    
    

    相关文章

      网友评论

          本文标题:列表

          本文链接:https://www.haomeiwen.com/subject/ywpqmftx.html