一、列表推导式: ls = [元素表达式 for i in 可迭代对象 if 筛选条件]

案例:

# -*- coding: utf-8 -*-
'''列表生成式练习''' # 练习一(三元表达式):编写名为collatz(number)的函数;实现的功能:参数为偶数时,打印number// 2;参数为奇数时,打印3*number + 1
num = int(input('num:')) def collatz(number):
pr_num = number // 2 if number % 2 == 0 else 3 * number + 1
print(pr_num) collatz(num) # 练习二:使用for循环,对列表元素的类型进行更改
ls = [1, 2, 3, 4, 5, 6, 7, 9]
ls1 = [str(i) for i in ls if i % 2 == 0]
print(ls1) # ['2', '4', '6']
ls = [str(i) for i in ls]
print(ls) # ['1', '2', '3', '4', '5', '6', '7', '9'] # 练习三: 找出1-10之间的所有偶数,并且返回一个列表(包含以这个偶数为半径的圆的面积)
ls = [i ** 2 * 3.14 for i in range(1, 11) if i % 2 == 0]
print(ls) # [12.56, 50.24, 113.04, 200.96, 314.0] import math li = [math.pi * r * r for r in range(2, 11, 2)]
print(li) # 找出1-10之间的所有奇数,并且返回一个列表(转换奇数为字符串)
ls = [str(i) for i in range(1, 11) if i % 2 == 1]
print(ls) # ['1', '3', '5', '7', '9'] # 练习四:找出1-50之间的所有质数
def isPrime(num):
for i in range(2, num):
if num % i == 0:
return False
return True ls2 = [i for i in range(1, 50) if isPrime(i)]
print(ls2) # [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]

二、生成器推导式:creater = (元素表达式 for i in 可迭代对象 if 筛选条件)

案例:

"""生成器表达式"""
# 生成器表达式就是把列表中的[]换成()就形成了生成器表达式
# 示例:母鸡生一筐鸡蛋编程了,给你个母鸡,需要下蛋的时候就下蛋
chicken = ('鸡蛋%s' % i for i in range(5))
print(chicken) # <generator object <genexpr> at 0x00000000027ED620> 得到的是生成器对象
print(next(chicken)) # 鸡蛋0
print(list(chicken)) # ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4']

三、字典推导式 :dic = {k:v for k,v in 可迭代对象 if 筛选条件}

案例:

'''(二)字典生成式'''

#
# 练习一: 假设有num1个学生,成绩在60-100之间,筛选出成绩在90分以上的学生
def filter_score(num1):
count = 0
dic_ns = {}
while count < num1:
name = input('name:')
score = int(input('score'))
count += 1
dic_ns[name] = score
dic = {k: v for k, v in dic_ns.items() if v >= 90}
print(dic) # filter_score(5)
# 练习二: 将字典中的key值和value值调换
dic1 = {'q': 1, 'z': 2, 'k': 3} def change(dic):
dic = {v: k for k, v in dic.items()}
print(dic) change(dic1) # {1: 'q', 2: 'z', 3: 'k'} # 练习三:大小写合并,Key值最终全部为小写
dic2 = {'q': 'QQWSAS', 'Z': 'ASDqq', 'k': 'qqAA'} def lower_my(dic):
dic = {k: v.lower() for k, v in dic.items()}
print(dic) lower_my(dic2) # {'q': 'qqwsas', 'Z': 'asdqq', 'k': 'qqaa'}

四、三元表达式: res = 值1 if 条件 else 值2                         # 条件成立时返回值1,条件不成立时返回值2

案例:

"""三元表达式"""

def fn(a, b):
if a > b:
return a
return b print(fn(3, 8)) # def fn(a, b):
return a if a > b else b print(fn(5, 3)) # # 将三元表达式用于列表生成式中
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [i if i > 3 else i + 1 for i in a if i < 7]
print(b) # [2, 3, 4, 4, 5, 6]

day14(2)---列表推导式、生成器推导式、字典推导式、三元表达式的更多相关文章

  1. python的推导式 —— 列表推导式、集合和字典推导式

    python的推导式是用于快速处理数据的方法. 主要有:列表推导式.集合推导式和字典推导式 import time import numpy as np 列表推导式: 1. 速度快 t1 = time ...

  2. Python基础8:列表推导式(list)字典推导式(dict) 集合推导式(set)

    推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...

  3. python基础语法9 生成器,面向对象编程思想,三元表达式,列表生成式,生成器表达式(生成式),匿名函数,内置函数

    生成器 1.什么是生成器? 生成的工具. 生成器是一个 "自定义" 的迭代器, 本质上是一个迭代器. 2.如何实现生成器 但凡在函数内部定义了的yield, 调用函数时,函数体代码 ...

  4. python字典推导式 - python基础入门(17)

    在昨天的文章中,我们介绍了关于python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部. ...

  5. Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数

    上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...

  6. python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  7. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  8. 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)

    一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...

  9. python之三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    一 三元表达式.列表推导式.生成器表达式 一 三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(r ...

随机推荐

  1. SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事?

    SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事? ME81N 报表中,如下PO的net value为负数, 怎么回事? 经查这些PO都是退货采购 ...

  2. iPhone照片格式heic图片怎么打开

    苹果自iOS11系统之后默认的是heic图片格式,在电脑和安卓中都无法直接查看,需要将其转换图片格式,那苹果heic图片怎么转换成jpg格式?下面我们一起来看看吧! 使用工具:电脑.图片 操作方法: ...

  3. 2.Odoo产品分析 (一) – 一切为零

    查看Odoo产品分析系列--目录 1. 默认数据库 声明在先  本系列文档(Odoo产品分析)整理来自本人对该ERP的理解,并结合文档Working-with-Odoo-10-Second-Editi ...

  4. MySQL 横向表分区之RANGE分区小结

    MySQL 横向表分区之RANGE分区小结 by:授客 QQ:1033553122 目录 简介 1 RANGE分区 1 创建分区表 1 查看表分区 2 新增表分区 2 新增数据 3 分区表查询 3 删 ...

  5. Python基于dtw实现股票预测【多线程】

    # -*- coding: utf-8 -*- """ Created on Tue Dec 4 08:53:08 2018 @author: zhen "&q ...

  6. C#-多态(十二)

    继承概念 多态:即一个接口,多个功能 同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果 多态性可以是静态的或动态的.在静态多态性中,函数的响应是在编译时发生的.在动态多态性中,函数的响 ...

  7. Windows Server 2016-WinSer 2016标准版与数据中心版的区别

    今天在整理文章的时候看到有读者问到他现在的测试环境是用的Windows Server 2016标准版,和我现阶段系列文章的环境是否有区别. 其实针对Windows Server 2016 Active ...

  8. visual studio 的git插件推荐

    TGit 支持vs 2013/15/17及更高版本,需要搭配 TortoiseGit 和 MSysGit 一起使用,当然这两者也是我在windows下使用git的推荐组合. 历史版本的diff查看使用 ...

  9. IPerf——网络测试工具介绍与源码解析(5)

    本篇随笔讲述一下TCP协议下,双向测试模式和交易测试模式下客户端和服务端执行的情况: 双向测试模式: 官方文档的解释 Run Iperf in dual testing mode. This will ...

  10. oracle USING 用法

    提问 using(xx)中可以接多个列吗? using(xx)中的列可以接表名或别名吗? 在使用using的语句中,select * 可以使用吗? 如果表有别名t,select t.* from ta ...