三元表达式

定义

  1. res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值

使用

  1. # 判断一个两个数字大小
  2. a = 10
  3. b = 100
  4. res = a if a > b else b #三元表达式
  5. print(res)
  6. # 100

补充:三元表达式一般只用于二选一的情况 最好不要嵌套使用(语法不简洁)

列表推导式

定义

  1. res = [表达式 for 变量名 in 循环对象]
  2. res = [表达式 for 变量名 in 循环对象 if 条件]

使用

  1. # 需求:将列表中所有的人名后面加上 _666
  2. name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
  3. res = [i+'_666' for i in name_list] # 列表生成式
  4. print(res)
  5. # ['jason_666', 'kevin_666', 'tony_666', 'oscar_666', 'jerry_666']
  6. res = [i+'_666' for i in name_list if i == 'kevin'] # 列表生成式
  7. print(res)
  8. # kevin_666

补充:列表生成式中值允许出现forif不能出现else 因为会产生歧义(for和if都能结合else)

字典推导式

定义

  1. res = { key: value for 变量名 in 循环对象 }
  2. res ={ key: value for 变量名 in 循环对象 if 条件 }

使用

  1. # 需求:将列表中各字符串值为键,各字符串的长度为值,组成键值对
  2. l = ['1', '22', '333', '4444', '55555']
  3. res = {i: len(i) for i in l}
  4. print(res)
  5. # {'1': 1, '22': 2, '333': 3, '4444': 4, '55555': 5}
  6. res = {i: len(i) for i in l if len(i) != 2}
  7. print(res)
  8. # {'1': 1, '333': 3, '4444': 4, '55555': 5}

集合推导式

定义

  1. res = { 表达式 for 变量名 in 循环对象 }
  2. res ={ 表达式 for 变量名 in 循环对象 if 条件 }

使用

  1. res = {i for i in range(10)}
  2. print(res)
  3. # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  4. res = {i for i in range(10) if i == 5}
  5. print(res)
  6. # 5