zoukankan      html  css  js  c++  java
  • PYTHON1.day06

    day05回顾
       循环语句
         for 语句
           for 变量列表 in 可迭代对象:
               语句块1
           else:
               语句块2
         可迭代对象:
           字符串str, range()返回的对象, 列表list
         range(停止)
         range(开始, 停止)
         range(开始, 停止, 步长)
         for语句嵌套
        
         continue语句
        
       列表 list
       创建列表:
            字面值
              L = [1, 2, 3, 4]
              []
            构造函数
              list()
              list(range(10))
              list("ABC")
              L2 = list(L) # 复制列表  L2 = L
       列表的运算:
         +  +=  *  *=
         <  <=  >  >=  ==  !=
         in / not in 运算符
           判断一个元素是否存在于列表
        

    day06 笔记
    列表的索引操作

     语法:
         列表[整数表达式]
       用法:
         等同于字符串的索引
         索引分为正向索引和反向索引,规则与字符串索引规则完全相同
       示例:
         L = [1, 2, 3, 4]
         print(L[1])  # 2
         print(L[-1])  # 4

    列表是可变的序列,列表支持索引赋值,列表可以通过索引赋值改变
    列表中的元素
       语法:
         列表[整数表达式] = 表达式
       示例:
         L = [1, 2, 3, 4]
         L[2] = 3.14  # 改变了第三个元素的值



    列表的切片操作
       取值:
         列表[起始值:终止值]
         列表[起始值:终止值:步长]
         列表的切片取值返回一个列表,规则等同于字符串切片规则
       示例:
         L = list(range(10))
         L2 = L[::2]  # L2 = [0, 2, 4, 6, 8]


      列表的切片赋值
         作用:
           可以改变源列表的排列,可以插入,修改和删除数据
         语法:
           列表[切片] = 可迭代对象
         说明:
           切片赋值的赋值运算符(=)的右侧必须是一个可迭代对象
         示例:
           L = [2, 3, 4]
           L[0:1] = [1.1, 2.2]  # L = [1.1, 2.2, 3, 4]
           L[2:] = [3.3, 4.4, 5.5]  # L = [1.1, 2.2, 3.3, 4.4, 5.5]
           L[1:4] = []  # 切出2.2, 3.3, 4.4, 没加入新数据 L = [1.1, 5.5]
           L[1:] = range(5, 9)  # L = [1.1, 5, 6, 7, 8]
           L = [2, 5]
           L[1:1] = [3, 4]  # L = [2, 3, 4, 5]
           L[0:0] = range(2) # L = [0, 1, 2, 3, 4, 5]
           L[6:] = [6, 7] # L = [0, 1, 2, 3, 4, 5, 6, 7]

      切片注意事项:
         对于步长不等于1的切片赋值,赋值运算符的右侧的可迭代对象提
         供的元素的个数,一定要等于切片切出的段数
           L = [1, 2, 3, 4, 5, 6]
           L[::2] = "ABC"  # 对的
           L[::2] = "ABCDE" # 错的

    del 语句用于删除列表的元素
       语法:
         del 列表[索引]  # 删除索引
         del 列表[切片]  # 删除切片
     示例:
         L = [1, 2, 3, 4, 5, 6, 7]
         del L[-1]  # L = [1, 2, 3, 4, 5, 6]
         del L[::2]  # L = [2, 4, 6]

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

      1 # 练习:
      2 #   已知有列表:
      3 #     L = [3, 5]
      4 #   1) 用索引和切片操作,将原列表改变为:
      5 #     L = [1, 2, 3, 4, 5, 6]
      6 #   2) 将列表反转,删除最后一个元素后,打印此列表:
      7 #     ...
      8 #     print(L)  # [6, 5, 4, 3, 2]
      9 
     10 L = [3, 5]
     11 
     12 print("id(L)", id(L))  # ??????
     13 L[1:1] = [4]  # L = [3, 4, 5]
     14 L[len(L):] = [6]
     15 L[0:0] = [1, 2]
     16 print('L=', L)
     17 
     18 # 将列表反转,删除最后一个元素后,打印此列表:
     19 # L = L[::-1]  # <<<<------ L绑定新的列表ID会变化
     20 L[::] = L[::-1]  # ID不变
     21 del L[-1]
     22 print("L=", L)
     23 print("id(L):", id(L))
     24 
     25 
     26 
    list


    Python3 中常用于序列的函数:
       len(x)   返回序列的长度
       max(x)   返回序列的最大值元素
       min(x)   返回序列的最小值元素
       sum(x)   返回序列中所有元素的和(元素必须是数值类型)
       any(x)   真值测试,如果列表中其中一个值为真值则返回True
       all(x)   真值测试,如果列表中所有值为真值才返回True,否则
                返回False

      示例:
         L = [8, 3, 6, 2, 7]
         print(len(L))  # 5
         print(max(L))  # 8
         print(min(L))  # 2
         print(sum(L))  # 26
         print(any(x))  # True
         print(all(x))  # True

    序列函数2
       reversed(seq)  返回原序列反向顺序的可迭代对象
       sorted(iterable, reverse=False)   返回已排序的列表

      示例:
         L = [1, 2, 3, 4]
         for x in L:
             print(x)  # 1 2 3 4
         for x in reversed(L):
             print(x)  # 4 3 2 1
         L2 = [5, 8, 3, 7, 1]
         L3 = sorted(L2)  # L3 = [1, 3, 5, 7, 8]
         L4 = sorted(L2, reverse=True)  # 降序排序 L4=[8,7,5,3,1]

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

      2. 写一个程序,让用户输入两个或以上的正整数,当输入小于零的数
          时结束输入(不允许输入重复的数)
          1) 打印这些数的和
          2) 打印这些数的最大数
          3) 打印这些数的最二大的数
          4) 删除最小的一个数,并打印原来的列表
        

      1 #   2. 写一个程序,让用户输入两个或以上的正整数,当输入小于零的数
      2 #      时结束输入(不允许输入重复的数)
      3 #      1) 打印这些数的和
      4 #      2) 打印这些数的最大数
      5 #      3) 打印这些数的最二大的数
      6 #      4) 删除最小的一个数,并打印原来的列表
      7 
      8 numbers = []  # 创建一个容器,用变量numbers绑定
      9 while True:
     10     x = int(input("请输入正整数: "))
     11     if x < 0:
     12         if len(numbers) < 2:
     13             print('您输入的数字太少')
     14             continue
     15         break
     16     if x not in numbers:
     17         numbers += [x]
     18 
     19 print("这些数的和是:", sum(numbers))
     20 L = sorted(numbers)
     21 print("最大数是:", L[-1])
     22 print("第二大数是:", L[-2])
     23 min_number = L[0]
     24 for i in range(len(numbers)):
     25     if numbers[i] == min_number:
     26         del numbers[i]
     27         break
     28 
     29 print("删除最小数后的列表是: ", numbers)
     30 
    1,2

    python3 中常用的列表方法
       文档参见:
         python_base_docs_html/list.py

    2019-01-22_20-33-10

    练习:
       输入多行文字,存入列表中
       每次输入后回车算作一行,任意输入多行文字.
       当直接输入回车(即空行时算作输入结束)
         要求:
           1) 按原输入的内容在屏幕上输出内容
           2) 打印出您共输入了多少行文字
           3) 打印出您共输入了多少个字符
         如:
           请输入: ABC
           请输入: abc
           请输入: 123
           请输入: <回车>
         您输入的内容是:
           ABC
           abc
           123
         您输入了3行文字
         您输入了9个字符

      1 # 练习:
      2 #   输入多行文字,存入列表中
      3 #   每次输入后回车算作一行,任意输入多行文字.
      4 #   当直接输入回车(即空行时算作输入结束)
      5 #     要求:
      6 #       1) 按原输入的内容在屏幕上输出内容
      7 #       2) 打印出您共输入了多少行文字
      8 #       3) 打印出您共输入了多少个字符
      9 #     如:
     10 #       请输入: ABC
     11 #       请输入: abc
     12 #       请输入: 123
     13 #       请输入: <回车>
     14 #     您输入的内容是:
     15 #       ABC
     16 #       abc
     17 #       123
     18 #     您输入了3行文字
     19 #     您输入了9个字符
     20 
     21 
     22 L = []
     23 
     24 while True:
     25     s = input("请输入: ")
     26     if not s:  #  当输用户直接输入回车时,得到空字符串
     27         break
     28     L.append(s)  # 将字符串s追加到L列表末尾
     29 print("L=", L)
     30 print("您输入的内容是:")
     31 for text in L:
     32     print(text)
     33 
     34 print("您输入了", len(L), '行文字')
     35 
     36 count = 0
     37 for text in L:
     38     count += len(text)  # 把每一行字符串长度累加到count中
     39 print("您输入了", count, '个字符')
     40 
         
    深拷贝 和 浅拷贝
    浅拷贝 shallow copy

       浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的
       对象的复制过程
       如:
         L1 = [1, 2, [3.1, 3.2]]
         L2 = L1.copy()
         L2[2][0] = 3.14
         print(L1)  # [1, 2, [3.14, 3.2]]
         print(L2)  # [1, 2, [3.14, 3.2]]

    深拷贝 deep copy
       深拷贝会在复制过程中,逐层复制深层对象,实现两个对象的完全独立
       如:
         import copy  # 导入考拷贝模块
         L1 = [1, 2, [3.1, 3.2]]
         L2 = copy.deepcopy(L1)
         L2[2][0] = 3.14
         print(L1)  # [1, 2, [3.1, 3.2]]
         print(L2)  # [1, 2, [3.14, 3.2]]

    小结:
       L1 = [1, 2, [3.1, 3.2]]
       L2 = L1  # 不拷贝
       L3 = L1.copy()  # 浅拷贝
       import copy
       L4 = copy.deepcopy(L1)  # 深拷贝



    列表与字符串比较:
       列表和字符串都是序列,元素之间有先后关系
       字符串中每个元素只能存储字符,而列表可以存储任意类型的元素
       字符串是不可变的序列,而列表是可变的序列
       列表和字符串都是可迭代对象

    字符串的文本解析方法
       方法名     说明
      S.split(sep=None)  将字符串,使用sep作用分隔符分割S字符串
                返回分割后的字符串列表,当不给定参数时,用空白字符
                作为分隔符
      S.splitlines()  将字符串接换行符' ' 分为分隔符进行分割
                返回分割后的列表
      S.join(iterable)  用可迭代对象中的字符串,返回一个是中间
                用S进行分隔的字符串
       示例:
         s = 'Beijing is capital'
         L = s.split()  # L = ['Beijing', 'is', 'capital']
         s2 = '-'.join(L)  # s2 = 'Beijing-is-capital'

    练习:
       有字符串'hello' 生成字符串'h e l l o'  和 'h-e-l-l-o'
        答案:
          s = 'hello'
          s2 = ' '.join(s)
          s3 = '-'.join(s)



    创建列表的方法有几种:
       字面值:
         [1, 2, 3]
       构造函数:
         list(range(1, 4))
       列表推导式方式

    列表推导式 list comprehension
       列表推导式是用可迭代对象创建列表的表达式
       作用:
         用简易方法生成列表
       语法:
         [表达式 for 变量 in 可迭代对象]
         或
         [表达式 for 变量 in 可迭代对象 if 真值表达式]
       示例:
         生成一个数值为1~9的整数的平方的列表,如:
           L = [1, 4, 9, 16, 25, 36, 49, 64, 81]

         用循环语句:
           L = []
           for x in range(1, 10):
               L.append(x ** 2)
           L = [x ** 2 for x in range(1, 10)]

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

      1 # 练习 :
      2 #   用列表推导式生成 1~100 内所有奇数组成的列表
      3 #   结果是:[1, 3, 5, 7, ....., 99]
      4 
      5 # L = [x for x in range(1, 100, 2)]
      6 L = [x for x in range(1, 100) if x % 2 == 1]
      7 print(L)
      8 
      9 L = []
     10 for x in range(1, 100):
     11     if x % 2 == 1:
     12         L.append(x)
     13 print("L=", L)
    1~100

       示例:
         生成一个数值为1~9的奇数的平方的列表,如:
           L = [1, 9, 25, 49, 81]
         L = [x**2 for x in range(1, 10) if x % 2 == 1]

    列表推导式的嵌套:
       语法:
         [表达式 for 变量1 in 可迭代对象1 if 真值表达式1
                   for 变量2 in 可迭代对象2 if 真值表达式2
                     ...]
       示例:
         将列表[10, 20, 30] 中的元素与列表[1, 2, 3] 元素分别相
         加,将得到的元素放于一个列表中...
         L = [x + y for x in [10,20,30] for y in [1,2,3]]
         print(L)  # [11, 12, 13, 21, 22, 23, 31, 32, 33]

      
      
    1. 练习:
       用字符串"ABC" 和 "123 生成如下列表:
    ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

    2. 生成一个列表,此列表为x的平方加1不能被5整数的数的列表
        条件: (x ** 2 + 1) % 5 != 0
        x的取值范围是: 0 <= x < 100
        L = [x for x in range(100) if (x ** 2 + 1) % 5 != 0]

      1 # 练习 :
      2 #   用列表推导式生成 1~100 内所有奇数组成的列表
      3 #   结果是:[1, 3, 5, 7, ....., 99]
      4 
      5 # L = [x for x in range(1, 100, 2)]
      6 L = [x for x in range(1, 100) if x % 2 == 1]
      7 print(L)
      8 
      9 L = []
     10 for x in range(1, 100):
     11     if x % 2 == 1:
     12         L.append(x)
     13 print("L=", L)
    ABC123


    练习:
       1. 已知有一个字符串:
           s= '100,200,300,500,800'
         将其转化为列表,列表内都为整数,即:
           L = [100,200,300,500,800]

      2. 有一些数存于列表中,如:
         L = [1, 3, 2, 1, 6, 4, 2, ....., 98, 82]
         1) 将列表中出现数字存入到另一个列表L2中
            要求:
              重复出现多次的数只在L2列表中保留一份(去重)
         2) 将列表中出现两次的数字存于L3列表中,在L3列表中只保留一份
       3. 生成前40个斐波那契数(Fibonacci)
           1  1  2  3  5  8  13  21
         要求:  将这些数保存在列表中,最后打印这些数
           注: 斐波那契数的前2个数为1 和 1, 从第二个数起为前两个
           数相加之和
     

      1 #   3. 生成前40个斐波那契数(Fibonacci)
      2 #       1  1  2  3  5  8  13  21
      3 #     要求:  将这些数保存在列表中,最后打印这些数
      4 #       注: 斐波那契数的前2个数为1 和 1, 从第二个数起为前两个
      5 #       数相加之和
      6 
      7 # 方法1:
      8 # L = []
      9 # a = 0  # a表示第一个数的前一个数
     10 # b = 1  # b表示第一个数
     11 # while len(L) < 40:
     12 #     # 每次把b加入到列表中
     13 #     L.append(b)
     14 #     # 再算出下一个fibonacci数,存于b中
     15 #     c = a + b  # 算出下一个数
     16 #     a = b  # 把当前作为前一个数
     17 #     b = c  # 把新算出来的c交给b
     18 
     19 # 方法2
     20 # L = []
     21 # a = 0  # a表示第一个数的前一个数
     22 # b = 1  # b表示第一个数
     23 # while len(L) < 40:
     24 #     # 每次把b加入到列表中
     25 #     L.append(b)
     26 #     # 再算出下一个fibonacci数,存于b中
     27 #     a, b = b, a + b  # 序列赋值
     28 #     # c = a + b  # 算出下一个数
     29 #     # a = b  # 把当前作为前一个数
     30 #     # b = c  # 把新算出来的c交给b
     31 
     32 # 方法3
     33 L = [1, 1]
     34 while len(L) < 40:
     35     # 每次生成一个数,加到列表里
     36     L.append(L[-1] + L[-2])
     37 
     38 
     39 print("L=", L)
     40 
     41 
     42 
     43 
     44 
     45 
     46 
     47 
     48 
     49 
     50 
     51 
     52 
     53 
    3

      1 #   1. 已知有一个字符串:
      2 #       s= '100,200,300,500,800'
      3 #     将其转化为列表,列表内都为整数,即:
      4 #       L = [100,200,300,500,800]
      5 
      6 
      7 s= '100,200,300,500,800'
      8 L2 = s.split(',')  # L2=['100','200','300','500','800']
      9 L = [int(x) for x in L2]
     10 
     11 print("L=", L)  # print("L=", str(L))
     12 
    1


      1 #   2. 有一些数存于列表中,如:
      2 #     L = [1, 3, 2, 1, 6, 4, 2, ....., 98, 82]
      3 #     1) 将列表中出现数字存入到另一个列表L2中
      4 #        要求:
      5 #          重复出现多次的数只在L2列表中保留一份(去重)
      6 #     2) 将列表中出现两次的数字存于L3列表中,在L3列表中只保留一份
      7 
      8 
      9 L = [1, 3, 2, 1, 6, 4, 2, 98, 82]
     10 L2 = []
     11 for x in L:
     12     if x not in L2:  # 说明L2里不存在,这是第一次出现
     13         L2.append(x)
     14 print('L2 =', L2)
     15 
     16 # 2) 将列表中出现两次的数字存于L3列表中,在L3列表中只保留一份
     17 L3 = []
     18 for x in L:
     19     if L.count(x) == 2 and x not in L3:
     20         L3.append(x)
     21 print("L3=", L3)
     22 
     23 
     24 
     25 
    2
  • 相关阅读:
    爬虫助手spider_tool-JUN
    frida 保存打印日志到本地
    frida get_frontmost_application报错
    adb shell安装证书/修改证书到系统级/
    利用celery进行分布式爬虫
    vscode Go插件安装失败解决方法,亲测2020.10.15
    Frida hook map集合遍历和修改
    frida_rpc dou音、饿le么 header加密
    Frida入门
    adb连接模拟器
  • 原文地址:https://www.cnblogs.com/shengjia/p/10305976.html
Copyright © 2011-2022 走看看