Python 非空即真、列表生成式、三元表达式 day3
一、非空即真:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false
- 布尔型,False表示False,其他为True
- 整数和浮点数,0表示False,其他为True
- 字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True
- 序列类型(包括tuple,list,dict,set等),空表示False,非空表示True
- None永远表示False
举例一:
s = ''
if s:
print('走if')
else:
print("走else") #走else
举例二:
username = input('username:')
if username:
print("用户名是%s"%username)#若输入名字则走if
else:
print("请输入用户名")#若不输入用户名则走else
举例三:
a = 0 if a :
print("go if")
else:
print("go else")#走else
二、列表生成式:
python里面[]表示一个列表,快速生成一个列表可以用range()函数来生成。
对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法,那就是列表生成式了。
1、range()
一个连续的数字类型列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成
b = range(1, 11)
print(b) # 结果 range(1, 11)python3直接打印b会显示range(1, 11)对象,并不是直接显示应该列表,如果想显示列表,可以用list()转下
print(type(b))#结果<class 'range'>
print(list(b)) # 转list ,输出结果为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、列表生成式
(1).如果想对列表里面的数据进行运算后重新生成一个新的列表,如[11,22, 33 ... 1010],按平常思维就是先定义一个列表c,然后for循环挨个运算,算完了再append添加到c,最后c就是新的列表了
# 对列表数平方 b = range(1, 11)
c = []
for i in b:
c.append(i*i)
print(c) # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
(2).接下来看看用列表生成式如何去实现
# 对列表数平方 b = range(1, 11)
c = [x*x for x in b]
print(c) # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
(3).列表生成式语法是固定的,[]里面for 前面是对列表里面数据的运算操作,后面跟平常for循序一样遍历去读取。运行后会自动生成新的列表
3、带if判断
1.如果想对一个列表里面的数据筛选,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数,按正常思维可以for循环挨个判断,符合条件的放到新的列表
c = [1, 3, -3, 4, -2, 8, -7, 6]
d = []
for i in c:
if i > 0:
d.append(i) # 添加到列表d
print(d) # 结果:[1, 3, 4, 8, 6]
2.接下来可以看看列表生成式,写出更加简洁优雅的代码,快速高效!
# 提取大于0的数
c = [1, 3, -3, 4, -2, 8, -7, 6]
d = [x for x in c if x > 0]
print(d) # 运行结果[1, 3, 4, 8, 6]
再举个例子:
result3 = [str(i+1).zfill(2) for i in range(1,10)]
print(result3)
#拆开写等同于
result4 = []
for i in range(1,10):
j = str(i+1).zfill(2)
result4.append(j)
print(result4) #打印结果['01', '02', '03', '04', '05', '06', '07', '08', '09']
三、三元表达式
Python没有三目运算符(?:),但有类似的替代方案,如下:为真时的结果 if 判定条件 else 为假时的结果
举例:如果77大于66,输出100,否则输出99
a = 100 if 77 > 66 else 99
print(a) #打印结果为100
#另一个例子:题目为判断给定身份证的性别
#身份证第17位代表性别,男奇数,女偶数
id_card = '' if int(id_card[-2])%2 == 0:
sex = '女'
else:
sex = '男'
print(sex)
#上面的代码等同于下面的代码 sex = '女' if int(id_card[-2])%2 == 0 else '男'
##先看if,如果if满足,则为if前面的值,否则取if后面的值
print(sex)
Python 非空即真、列表生成式、三元表达式 day3的更多相关文章
- Python非空即真,非零即真
非空即真,非零即真 #1. 非空即真(只要输入不为空就是真) #username =''(空字典.空字符串.空元组都算空) # a= '' # b=[] # c={} # d=None (返回值是No ...
- python协程函数应用 列表生成式 生成器表达式
协程函数应用 列表生成式 生成器表达式 一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._n ...
- xpinyin-函数返回多个值-lambda匿名函数-列表生成式-三元表达式
import xpinyinp=xpinyin.Pinyin() #实例化print(p.get_pinyin('小白','')) 函数返回多个值:1.函数如果返回多个值的话,它会把这几个值放到一个元 ...
- day5_非空即真非零即真
非空即真(字符串.元组.列表.字典.None),非零即真(指的是int类型或数字这种) # d={}# l=[]# t=()# a = ''# b = None以上都代表空 举例1: name = i ...
- Python学习笔记6(列表生成式)
1.生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3 ...
- Python 入门(十)列表生成式
生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, ...
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...
- 【Python】python内置函数、列表生成式、生成器
一.内置函数 1 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 2 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 3 pri ...
- python学习之模块(pip),列表生成式,模块操作mysql,excel
python基础 生成式 列表生成式 格式 [表达式 for 表达式 in 迭代对象 (可加判断)] 原: res1 = [] for i in range(1,5): res1.append(i) ...
随机推荐
- codevs——T1214 线段覆盖
http://codevs.cn/problem/1214/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descr ...
- ZooKeeper动态增加Server(动态增加节点)的研究(待实践)
说明:是动态增加Server,不是动态增加连接到ZK Server的Client. 场景如下(转自外文): 1.在t=t_1->[peer-1(Leader),peer-2],peer-1是主节 ...
- N天学习一个linux命令之ps
ps命令 用途 显示系统进程信息 用法 ps [options] 常用选项 选项有三种风格,这里是指Unix风格 (Unix,BSD,GNU LONG OPTIONS) 简单刷选类 -A, -e 显示 ...
- 【从0開始Tornado建站】发表文章和评论
先上个效果图: 这是每一个用户的主页.由于是基本功能.所以用户头像.爱好等信息都还没有,在下一阶段加上.右側"发表新文章"按钮点击后进入发表文章的页面: 之前尝试过 ...
- java常见的面试题
1. super()与this()的差别? super和this的差别: 1)super(參数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(參数):调用本类中还有一种形 ...
- wpf 样式的调用
这个针对异地调用: 1.在主程序的项目中新建一个Skins的目录.然后再目录里新建一个BlackSkin.xaml的字典资源: <ResourceDictionary xmlns="h ...
- everything的使用
https://www.voidtools.com/support/everything/searching/ 打开多个everything进程 https://www.voidtools.com/s ...
- B1001 狼抓兔子 最小割
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- python 4:str.lstrip()、str.rstrip()、str.strip()(分别去除首空格,尾空格,首尾空格;不改变原有变量,除非赋给)
name = " Hello,World! Hello,Python! " print(name + "检测行末空格的") print(name.lstrip( ...
- Blender插件加载研究
目标 [x] 解析Blender插件代码加载原理, 为测试做准备 结论 采用方法3的方式, 可以在测试中保证重新加载子模块, 是想要的方式, 代码如下: _qk_locals = locals() d ...