• XX学Python·总结和推导式


    公共方法总结

    • +:有{}的都不行,即字典,集合

      • 适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串

      • 两侧要是同种数据类型

      • 加法运算在容器类型中是拼接的意思

    • ×:有{}不行,即字典,集合

      • 适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串

      • 容器类型只能与int类型相乘(乘负数和0就是空的容器)

      • 乘法就是将容器类型复制指定次数,并进行拼接

    a = '爱你'
    print(a * 3)  # 爱你爱你爱你
    list1 = [1,2,3]
    print(list1 * 2)  # [1, 2, 3, 1, 2, 3]
    print(list1 * 0)  # []
    print(list1 * -1)  # []
    
    • in和not in

      • 字符串,列表,元组,字典,集合都可以使用

      • 判断元素是否在容器内,该元素必须能保存到容器内。比如列表、字典、集合本身都无法用集合储存,同样不能作为字典的键。

      • 字典判断的是元素是否在key中,即是否为其中的键。

    # 格式:元素 in 容器,返回布尔值
    set1 = {3,'rose','jack'}
    print(3 in set1)  # True
    print('rose' not in set1)  # False
    # 注意:判断的数据必须能够在集合中储存
    # print([2,3] in set1)  # TypeError: unhashable type: 'list'
    
    • 切片

      • 字符串,列表,元组可以切片,格式[起始位置:终止位置:步长]

      • 集合和字典无法切片,因为不能使用索引获取数据

      • 所有切片都不会修改原有数据,而是产生一个新的数据序列

    • len()

      • 可以获得str,list,tuple,set中元素个数

      • 获得dict中键值对个数

      • 同等于:容器._ _ len _ (),比如print(len(list1)与print(list1. _ _ len _ _())相同

    • max min

      list、tuple、set、str可以使用max min获取容器内最大最小值,例如print(max(list1))

      dict是使用max和min获取键的最大最小值,例如print(max(dict1))

    • enumerate枚举

      • 所有容器和可迭代类型都可以使用enumerate(数据,起始序号)。

      • 获取容器里数据时添加序号,默认序号从0开始,此序号可以作为索引使用

      • 一般用在 for 循环当中,是(序号,值)组成的元组

      list1 = ['xx', 2, 'lsl']
      for i in enumerate(list1):
          print(i)
      '''结果如下
      (0, 'xx')
      (1, 2)
      (2, 'lsl')
      '''
      for index,value in enumerate(list1):
          print(index, value, sep=':')  # 用:进行分割
      '''结果如下
      0:xx
      1:2
      2:lsl
      '''
      # 字典中获取的是key
      dict1 = {'name': 'xx', 'age': 18}
      for i in enumerate(dict1):
          print(i)  # 如(0, 'name')
      for order_num, value in enumerate(dict1):  # order_num序号的意思
          print(order_num, value, sep=':')  # 获取的key,如1:age
      
      set1 = {'xx', 520, 'lsl'}
      for order_num, value in enumerate(set1):
          print(order_num, value, sep=':')  # 结果顺序不定
      

    推导式

    • 列表推导式:[要插入的值 for 临时变量 in 数据序列 if 条件]

    • 集合推导式:{要插入的值 for 临时变量 in 数据序列 if 条件}

    • 字典推导式:{要插入的键:要插入的值 for 临时变量 in 数据序列 if 条件}

    • 所有推导式都可以用for循环改写,不熟练的时候可以采用

    • 没有元组和字符串推导式,因为其内部元素无法被修改

    # 获取0到9的数据序列
    # 使用while循环
    list1 = []
    i = 0
    while i < 10:
        list1.append(i)
        i += 1
    print(list1)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 使用for循环
    list2 = []
    for i in range(0, 10):
        list2.append(i)
    print(list2)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 使用推导式
    list3 = [i for i in range(10)]
    print(list3)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # 练习:使用推导式创建一个1-10的偶数数据序列
    # 使用for
    list4 = []
    for i in range(1, 11):
        if i % 2 == 0:
            list4.append(i)
    print(list4)  # [2, 4, 6, 8, 10]
    # 推导式,注意和上面的for循环结构对应。
    list5 = [i for i in range(1, 11) if i % 2 == 0]
    print(list5)  # [2, 4, 6, 8, 10]
    
    # 练习:用推导式打印九九乘法表,将所有算式放入列表中
    # for循环打印没有放入列表中
    for i in range(1,10):
        for j in range(1,i+1):
            print(f'{j}*{i}={i*j}', end=' ')
        print()
    # for循环打印放入列表中
    list11 = []
    for i in range(1,10):
        for j in range(1,i+1):
            list11.append(f'{j}*{i}={i*j}')
    print(list11)
    # 推导式
    list6 = [f'{j}*{i}={i*j}' for i in range(1, 10) for j in range(1, i+1)]
    print(list6)
    
    # 集合推导式和列表相同
    set1 = {i for i in range(1, 11) if i % 2 == 0}
    print(set1)  # {2, 4, 6, 8, 10}
    
    # 字典推导式
    keys = ['name', 'age']
    values = ['xx', 18]
    # 用for循环
    dict1 = {}
    for i in range(len(keys)):
        dict1[keys[i]] = values[i]
    print(dict1)  # {'name': 'xx', 'age': 18}
    # 用推导式
    dict2 = {keys[i]: values[i] for i in range(len(keys))}
    print(dict2)  # {'name': 'xx', 'age': 18}
    
  • 相关阅读:
    XSS 1
    KALI修改密码
    bugku web4
    16进制 32进制 base64之间的区别
    buuctf
    buuctf wireshark
    buuctf 变异凯撒
    2016集训测试赛(二十)Problem A: Y队列
    USACO 4.1.1 麦香牛块 Beef McNuggets
    2016集训测试赛(十八)Problem C: 集串雷 既分数规划学习笔记
  • 原文地址:https://www.cnblogs.com/portb/p/16754757.html
Copyright © 2020-2023  润新知