day14(2)---列表推导式、生成器推导式、字典推导式、三元表达式
一、列表推导式: 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)---列表推导式、生成器推导式、字典推导式、三元表达式的更多相关文章
- python的推导式 —— 列表推导式、集合和字典推导式
python的推导式是用于快速处理数据的方法. 主要有:列表推导式.集合推导式和字典推导式 import time import numpy as np 列表推导式: 1. 速度快 t1 = time ...
- Python基础8:列表推导式(list)字典推导式(dict) 集合推导式(set)
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...
- python基础语法9 生成器,面向对象编程思想,三元表达式,列表生成式,生成器表达式(生成式),匿名函数,内置函数
生成器 1.什么是生成器? 生成的工具. 生成器是一个 "自定义" 的迭代器, 本质上是一个迭代器. 2.如何实现生成器 但凡在函数内部定义了的yield, 调用函数时,函数体代码 ...
- python字典推导式 - python基础入门(17)
在昨天的文章中,我们介绍了关于python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部. ...
- Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数
上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...
- python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)
一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)
一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...
- python之三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
一 三元表达式.列表推导式.生成器表达式 一 三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(r ...
随机推荐
- NPOI 读取Excel文件
private void buttonExcel_Click(object sender, EventArgs e) { FileStream fs = null; List<ISheet> ...
- MySQL数据库锁类型
锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 一个栗子 :以买火车票为例,火车票可面向广大消 ...
- [DOM基础]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等属性的解释
由于经常搞混这几个属性,所以查找资料总结一下,方便以后翻出来温习. 一.偏移量-以offset开头的 1.offsetHeight:元素在垂直方向上占用的空间大小,像素.包括元素的高度.可见的水平滚动 ...
- Nodejs全局/缓存路径配置
$ npm config set prefix "D:\Program Files\nodejs\node_global" $ npm config set cache " ...
- vue-cil和webpack中本地静态图片的路径问题解决方案
1 本地图片动态绑定img的src属性 一般我们在html中或者vue组件文件中引用图片是这样,这是不需要做特别处理的 我们将图片放入assets中或者重新建立个文件夹img什么的都可以,随意- 但是 ...
- 在Arcmap中加载互联网地图资源的4种方法
前一段时间想在Arcmap中打开互联网地图中的地图数据,如影像数据.基础地图数据等,经过简单研究目前总结了四种方法,整理下与大家分享,有些内容可能理解有误,希望大家多多指教.4种方法如下: a) ...
- Tomcat异常:server Tomcat v9.09 Server at localhost failed to start
详细报错: 首先不要慌张,这不是Tomcat引发的问题.而是你自己代码错误导致的问题(小编遇到的是配置servlet-mapping时,url-pattern中配置不合法) 然后,检查控制台打印信息, ...
- Android为TV端助力 双缓存机制
废话不多说,直接贴代码! 所谓的双缓存,第一就是缓存在内存里面,第二就是缓存在SD卡里面,当你需要加载数据时,先去内存缓存中查找,如果没有再去SD卡中查找,并且用户可以自选使用哪种缓存! 缓存内存和缓 ...
- Android广播机制的基本使用
一提到广播我们第一感觉就会联想到小时候村里面的广播,安卓的广播机制也是类似于大喇叭.有发送广播的地方,也有接收广播的地方.但是具体怎么操作呢,我们来一步一步的看下去~ 安卓的广播种类 系统发送的广播: ...
- git 入门教程之知识速查
知识速查 创建版本库 初始化项目 git init 从零开始创建项目 示例 git init 克隆项目 git clone 将已有项目拷贝到本地 示例 git clone git@github.com ...