zoukankan      html  css  js  c++  java
  • Python全栈工程师(列表、拷贝)

                                        ParisGabriel
     
                   感谢 大家的支持  你们的阅读评价就是我最好的更新动力  我会坚持吧排版做的越来越好 
                                    
     
                         



                         每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以

                              Python人工智能从入门到精通

    列表创建函数:
      list(可迭代对象)
    序列有5种:
      star 字符串
      list 列表
      tuple 元组
      bytes   后面讲 
      bytearray  后面讲 
      序列运算符:
      in 、 not in
      >
      >=
      <
      <=
      +
      *

    列表的索引可以增加、删除、修改、列表的元素值
    切片赋值:
      步长不等于1时切片赋值,赋值运算符的右侧的可迭代对象提供的元素
      的个数一定要等于切片切出的片数
    del语句:
      用于删除列表的元素
      del 列表 [索引]
      del 列表 [切片]
    Python3中常用的序列相关函数:
      len(x) 返回序列的长度
      max (x) 返回最大元素
      min(x) 返回序列最小元素
      sum(x) 返回序列中所有原素的和
      any(x) 真值测试,如果列表中有一个值为真返回true
      all(x) 真值测试,如果列表中所有值为真返回true

    列表的方法(method)
    help(list)

    [ ]内的参数代表可以省略
        方法                        意义
    L.index(v [, begin[, end]])         返回对应元素的索引下标, begin:为开始索引,end:为结束索引,当 value 不存在时触发ValueError错误
    L.insert(index, obj)          将某个元素插放到列表中指定的位置 index:索引 obj:要插入的元素
    L.count(x)              返回列表中元素的个数 x:元素
    L.remove(x)            从列表中删除第一次出现在列表中的值 x:元素(例如列表内有2个3 删除第一个 依次进行)
    L.copy()                复制此列表(只复制一层,不会复制深层对象)
    L.append(x)               向列表中追加单个元素 可以追加可迭代对象元素
    L.extend(list)              向列表追加另一个列表
    L.clear()                清空列表,等同于 L[:] = []
    L.sort(reverse=False)          将列表中的元素进行排序,默认顺序按值的小到大的顺序排列
    L.reverse()               列表的反转,用来改变原列表的先后顺序
    L.pop([index])           删除索引对应的元素,如果不加索引,默认删除最后元素,同时返回删除元素的引用关系(相当于取出元素不归还,可以用变量来接受)
    字符串的文本解析方法:
    S.split(sep=None)     将字符串使用sep作为分隔符分割字符串,返回分隔后的字符串列表,当不给定参数时,用空白字符作为分隔符分隔
    S.join(iterable)      用可迭代对象中的字符串,返回一个中间用S分隔组合的字符串 S=esp 要插入分割链接的字符 iterable:可迭代对象

    潜拷贝和深拷贝:

    潜拷贝shallow copy:
      help(list.copy)
      拷贝指在复制过程中,只复制一层变量,不会复制深成变量绑定的对象的复制过程
      例如:

    >>> L = [3.1,3.2]
    >>> L1 = [1, 2, L]
    >>> L2 = L1.copy()
    >>> L1
    [1, 2, [3.1, 3.2]]
    >>> L2
    [1, 2, [3.1, 3.2]]
    >>> L2[2][0] = 3.14
    >>> L1
    [1, 2, [3.14, 3.2]]
    >>> L2
    [1, 2, [3.14, 3.2]]

    深拷贝 deep copy:
      import copy # 导入copy 模块
      例如:
      L = [3.1, 3.2]
      L1 = [1, 2, L]
      L2 = L1.deep copy()
      L2[2][0] = 3.14
      print(L1) #[1, 2, [3.1, 3.2]]
      print(L2) #1, 2, [3.14, 3.2]]

      深拷贝通常只对可变对象进行复制 ,不可变对象通常不会复制(这里深拷贝需要 import copy中的deepcopy  后面讲)

    小结:
      L1 = [1, 2, [3.1, 3.2]]

    这里只是纯粹的调用关系  可以通过内存地址查看

      L2 = L1          # 不拷贝 同时绑定一个对象
      L3 = L1.copy()    # 潜拷贝等同于 L3 = L1[:]
      import copy
      L4 = copy.deepcopy(L1) #深拷贝

    列表推导式 list comprehension:
      列表推导式是用可迭代对象生成列表的表达式
    语法:
      [表达式 for 变量 in 可迭代对象]
      或
      [表达式 for 变量 in 可迭代对象 if 真值表达式]

    说明:
      for in 表达式的 if 子句可以省略,省略后将对所有生成的对象进行求值处理
      如:生成1~9的平方的列表
      L= [x ** 2 for x in range(1,10)]
    列表推到式的嵌套:
    语法:
    L=[表达式
        for 变量1 in 可迭代对象1 if 真值表达式1
            for 变量2 in 可迭代对象2 if 真值表达式2 ]

    OK 今天的练习比较多 但是都很简单  争取把每个题都要理解他的原理 不懂得对照上面的参数进行核对一下就可以

    想要入门IT就必须多写多练 写的代码也多 你就越熟练  越熟练经验越多  尝试不同的思路去分析  

    什么时候写的想吐 什么时候才算会了  我们一起加油  

    练习:

    1.

    已知有列表:
    L = [3, 5]

    1) 用索引和切片等操作,将原列表改变为:
    L = [1, 2, 3, 4, 5, 6]
    2) 将列表反转,删除最后一个元素后打印此列表
    ...
    print(L) # [6, 5, 4, 3, 2]

    答案:

    L = [3, 5]
    L[:] = range(1, 7)
    L[::-1] = range(1, 7)# L[:] = [range(6, 0, -1)]
    del L[-1]
    print(L)

    2.
    1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中
    1) 打印用户共输入了几个数?
    2) 打印您输入的数的最大数是多少
    3) 打印您输入的数的最小数是多少
    4) 打印您输入的这些数的平均值是多少?

     答案:

    L = []
    while True:
        a = int(input("please input at will integer (input '-1' over):"))
        if a < 0:
            break
        L.append(a)
    L.sort()
    print("you input line number", len(L))
    print("top1:", L[-1])
    print("lower1:", L[0])
    print(" average number :", sum(L) / len(L))

     

    3.

    1.已知有一个字符串
    s = “100, 200, 300, 500, 800”
    将其转换为整数的列表存于L列表中

    答案:

    s = "100,200,300,500,800"
    L = s.split(",")
    print(L)

    2.生成前40个婓波那契数(fibonacci)
    1 1 2 3 5 8 13 .....
    要求将这些数字保存在列表中
    打印这些数

    答案:

    L = [1, 1]
    a = 1
    b = 1
    while True:
        a += b
        b += a
        L += [a, b]
        if len(L) > 38:
            break
    print(L)
    方法二
    L = [1, 1]
    a = 1
    b = 0
    i = 0
    while i < 40:
        a = a + b
        b = a - b
        L.append(b)
        i += 1
    print(L)

    4.

    L= [1, 3, 2, 1, 6, 4, 2, ......98, 82]
    将列表中出现的重复数字存入另一个列表L2中
    要求:重复出现多次的数字在L2中只保留一份 (去重)

    答案:

    L = []
    while True:
        a = int(input("please input at will integer (input '-1' over):"))
        if a < 0:
            break
        L.append(a)
    L2 = []
    for x in L:
        if x not in L2:
            L2.append(x)
    print(L)
    print(L2)

    5.
    输入多行文字,存入列表中,
    每次输入回车后算一行
    任意输入多行,当输入回车(即输入空行时结束输入)
    1) 按原输入内容在屏幕上输出内容
    2) 打印出您共输入了多少行文字
    3) 打印出您共输入了多少个字符

    答案;

    L = []
    i = 0
    while True:
        a = input("please input at will string direct Enter over:")
        if a == "":
            break
        i += len(a)
        L.append(a)
    for x in L:
        print(x)
    print("您共输入的行数:", len(L))
    print("您共输入的字符:", i)

    6.
    1. 有字符串"hello"
    请用此字符串生成:
    'h e l l o' 和 'h-e-l-l-o'
    2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,
    1) 打印这些数中最大的一个数
    2) 打印这些数中第二大的一个数
    3) 删除最小的一个数
    4) 打印剩余数的和

    答案:

    s = "heool"
    L = " ".join(s)
    print(L)
    L = "-".join(s)
    print(L)

    7.
    用列表推导式生成1~100内奇数的列表
    结果是: [1, 3, 5, 7, ..... 99]

    答案:

    L = [x for x in range(1, 100, 2)]
    print(L)
    L = [x for x in range(1, 100) if x % 2 != 0]
    print(L)

    8.
    生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方
    答案:

    L = [x**2 for x in range(2, 10, 2)]
    print(L)
    L = [x**2 for x in range(2, 10) if x % 2 == 0]
    print(L)

                 Python人工智能从入门到精通

     

    加油!

  • 相关阅读:
    Excel导入导出DataGridView
    博客开通第一天
    windows10 VM12 安装Mac OS X 10.11
    js判断IE浏览器及版本
    C# MD5 加密
    WindowsErrorCode
    localStorage,sessionStorage的使用
    js实现页面锚点定位动画滚动
    纯js实现页面返回顶部的动画
    HTML table固定表头
  • 原文地址:https://www.cnblogs.com/ParisGabriel/p/9286805.html
Copyright © 2011-2022 走看看