Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元祖(tuple)推导式

    一、列表推导式

    格式为:

    [表达式 for 变量 in 列表] [out_exp_res for out_exp in input_list] 或者 【表达式 for 变量 in 列表 if 条件】 【out_exp_res for out_exp in input_list if condition】

  • out_exp_res :列表生成元素表达式,可以由返回值的函数

  • for out_exp in input_list :迭代input_list 将out_exp 传入到out_exp_res 表达式中
  • if condition :条件语句,可以过滤列表中不符合条件的值
    1. names = ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
    2. name_a = [name.upper() for name in names if len(name) > 3]
    3. print(name_a)

    二、字典推导式

    格式为:

    { key_expr: value_expr for value in collection } 或 { key_expr: value_expr for value in collection if condition }

  1. # 将列表中各字符串值为键,各字符串的长度为值,组成键值对
  2. listdemo = ['Google', 'Runoob', 'Taobao']
  3. tmp_dict = {element: len(element) for element in listdemo}
  4. print(tmp_dict)
  5. # 将列表转化为字典,用键为key,索引值为value
  6. tmp_dict_1 = {element: index for index, element in enumerate(listdemo)}
  7. print(tmp_dict_1)
  8. # 提供三个数字,以三个数字为键,三个数字的平方为值来创建字典:
  9. tmp_dict_2 = {x: x ** 2 for x in (1, 2, 3)}
  10. print(tmp_dict_2)

三、集合推导式

格式为:

{ expression for item in Sequence } 或 { expression for item in Sequence if conditional }

  1. # 三、集合推导式
  2. set_new = {x ** 2 for x in (1, 2, 3)}
  3. print(set_new)
  4. # 判断不是 abc 的字母并输出:
  5. # {x for x in 'abracadabra' if x not in 'abc'}
  6. set_new_1 = { x for x in 'abracadabra' if x not in 'abc'}
  7. print(set_new_1)

四、元组推导式(生成器表达式)

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
元组推导式基本格式:

(expression for item in Sequence ) 或 (expression for item in Sequence if conditional )

  1. tuple_new = (x ** 2 for x in range(10) if x > 1)
  2. print(tuple_new)
  3. print(tuple(tuple_new))