Python 推导式

推导式简介

Python 推导式是一种别具一格的数据处理形式,可以由一个数据序列构建另一个数据序列,python 中支持一下数据结构的推导式

  • 列表推导式
  • 元组推导式
  • 字典推导式
  • 集合推导式

列表推导式

列表推导式使用很频繁,也称为列表解释式,其作用使用一种优雅的形式来创建列表

格式 【表达式 for 变量 in iterable(可迭代对象)】或 【表达式 for 变量 in iterable(可迭代对象) if 条件 】

说明:列表推导式从左到右一次递进,语句之间有嵌套关系

案例1、输出1~8的数字列表

nums = [x for x in range(1,9)]
print(nums) #[1, 2, 3, 4, 5, 6, 7, 8]

案例2、带有运算的推导式

# 每个元素 - 1
nums = [x - 1 for x in range(1, 9)]
print(nums) #[0, 1, 2, 3, 4, 5, 6, 7]

# 每个元素 * 2
nums = [x - 1 for x in range(1, 9)]
print(nums) #[0, 1, 2, 3, 4, 5, 6, 7]

# 每个元素 * 2
nums = [x * 2 for x in range(1, 9)]
print(nums) #[2, 4, 6, 8, 10, 12, 14, 16]
# 每个元素 * 元素
nums = [x * x for x in range(1, 9)]
print(nums) #[1, 4, 9, 16, 25, 36, 49, 64]

案例3、带有条件判断的推导式

# 求1~55被5整除的数
nums = [x for x in range(1, 56) if x % 5 == 0]
print(nums) #[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]
# 求1~55被5整除的数,再除5
nums = [x // 5 for x in range(1, 56) if x % 5 == 0]
print(nums) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

字符串遍历

 

list1 = [x for x in 'OpenAI']
print(list1) #['O', 'p', 'e', 'n', 'A', 'I']
#双遍历字符相加
list1 = [x + y for x in 'OpenAI' for y in '01']
print(list1) #['O0', 'O1', 'p0', 'p1', 'e0', 'e1', 'n0', 'n1', 'A0', 'A1', 'I0', 'I1']

元组推导式

num = (x for x in range(0,5))
print(num) #<generator object <genexpr> at 0x000001F2B72C70B0>

num = tuple((x for x in range(0,5)))
print(num) #(0, 1, 2, 3, 4)

说明使用元组推导式时,需要家 tuple

字典推导式

直接上案例

dict1 = {x:x*x for x in range(1,5)}
print(dict1)#{1: 1, 2: 4, 3: 9, 4: 16}

list1 = ['openai','pyth','on']
dict1 = {key:len(key) for key in list1}
print(dict1) #{'openai': 6, 'pyth': 4, 'on': 2}
posted @ 2023-06-12 07:36  晓枫的春天  阅读(97)  评论(0编辑  收藏  举报