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}