推导式

列表推导式

  1. # 01.常规列表推导式
  2. # 语法
  3. [expression for item in iterable]
  4. # 实例
  5. >>> number_list = [number for number in range(1,6)]
  6. >>> number_list
  7. [1, 2, 3, 4, 5]
  8. # 02.有判断的列表推导式
  9. # 语法
  10. [expression for item in iterable if condition]
  11. # 实例
  12. >>> a_list = [number for number in range(1,6) if number % 2 == 1]
  13. >>> a_list
  14. [1, 3, 5]
  15. # 03.含有多个for循环的列表推导式
  16. #实例
  17. >>> rows = range(1,4)
  18. >>> cols = range(1,3)
  19. >>> cells = [(row, col) for row in rows for col in cols]
  20. >>> for cell in cells:
  21. ... print(cell)
  22. (1, 1)
  23. (1, 2)
  24. (2, 1)
  25. (2, 2)
  26. (3, 1)
  27. (3, 2)

字典推导式

  1. # 语法
  2. { key_expression : value_expression for expression in iterable }
  3. # 实例
  4. >>> letters = 'letters'
  5. >>> letter_counts = {letter: letters.count(letter) for letter in letters}
  6. >>> letter_counts
  7. {'l': 1, 'e': 2, 't': 2, 'r': 1, 's': 1}

集合推导式

  1. # 语法
  2. {expression for expression in iterable }
  3. # 实例
  4. >>> a_set = {number for number in range(1,6) if number % 3 == 1}
  5. >>> a_set
  6. {1, 4}

生成器推导式

元组是没有推导式的。你可能认为将列表推导式中的方括号变成圆括号就可以定义元组推导式,其实,圆括号之间的是生成器推导式,它返回的是一个生成器对象

  1. # 实例
  2. >>> number_thing = (number for number in range(1, 6))
  3. # 圆括号之间的是生成器推导式,它返回的是一个生成器对象
  4. >>> type(number_thing)
  5. <class 'generotor'>