一、非空即真:

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false

  1. 布尔型,False表示False,其他为True
  2. 整数和浮点数,0表示False,其他为True
  3. 字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True
  4. 序列类型(包括tuple,list,dict,set等),空表示False,非空表示True
  5. 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的更多相关文章

  1. Python非空即真,非零即真

    非空即真,非零即真 #1. 非空即真(只要输入不为空就是真) #username =''(空字典.空字符串.空元组都算空) # a= '' # b=[] # c={} # d=None (返回值是No ...

  2. python协程函数应用 列表生成式 生成器表达式

    协程函数应用 列表生成式 生成器表达式   一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._n ...

  3. xpinyin-函数返回多个值-lambda匿名函数-列表生成式-三元表达式

    import xpinyinp=xpinyin.Pinyin() #实例化print(p.get_pinyin('小白','')) 函数返回多个值:1.函数如果返回多个值的话,它会把这几个值放到一个元 ...

  4. day5_非空即真非零即真

    非空即真(字符串.元组.列表.字典.None),非零即真(指的是int类型或数字这种) # d={}# l=[]# t=()# a = ''# b = None以上都代表空 举例1: name = i ...

  5. Python学习笔记6(列表生成式)

    1.生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3 ...

  6. Python 入门(十)列表生成式

    生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, ...

  7. Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式

    一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...

  8. 【Python】python内置函数、列表生成式、生成器

    一.内置函数 1 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 2 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 3 pri ...

  9. python学习之模块(pip),列表生成式,模块操作mysql,excel

    python基础 生成式 列表生成式 格式 [表达式 for 表达式 in 迭代对象 (可加判断)] 原: res1 = [] for i in range(1,5): res1.append(i) ...

随机推荐

  1. Spring MVC SessionAttributes ModelAttribute注解

    说明 本文主要针对 @SessionAttributes注解 和 @ModelAttribute注解的基础用法进行解析.至于为什么会将这两个注解放在一起,是因为它们之间还是有点影响的. @Sessio ...

  2. iptables防火墙原理详解+mysql pt工具

    http://seanlook.com/2014/02/23/iptables-understand/

  3. 977. Squares of a Sorted Array

    题目描述: Given an array of integers A sorted in non-decreasing order, return an array of the squares of ...

  4. CF #330 C

    改了题目之后,就是没有奇数的测试了... 其实可以很轻易地发现,要距离近的一方只会删除两端的,而要求远的一方会删除中间的. 那么,很明显的,剩下的两点会相差x/2个节点,于是,只要计算i和i+x/2的 ...

  5. 1.7-BGP⑤

    BGP Attributes/BGP属性 (通过BGP的属性,实现对BGP路由的选择/操纵) BGP Route Selection/BGP的选路原则: 1: The BGP forwarding t ...

  6. 大型项目开发: 隔离 (《大规模C++程序设计》书摘)

    书中第六章 隔离. 主要在撰述什么须要定义在头文件?什么应当移到编译单元中? 核心仍然是先区分接口定义与实现细节.实现细节的改变会导致客户代码的又一次编译,从逻辑上也表示与客户代码间可能存在着强耦合. ...

  7. 关于isset的一点说明

    作者:zhanhailiang 日期:2014-10-08 今天遇到一个非常奇怪的bug,測试例如以下: <? php $a = 'abc'; var_dump(isset($a['code'] ...

  8. 关于逆元&&lucas定理

    lucas是求组合数C(m,n)%p,有一个公式:C(m,n) = C(m/p,n/p)*C(m%p,n%p). (a*b)%c==a%c*b%c,但是(a/b)%c!=a%c/b%c,所以我们要算b ...

  9. javascript从作用域链的角度看闭包

    闭包 闭包是一个能访问外部函数定义的变量的函数. 为什么? 当访问一个变量时,解释器会首先在当前作用域查找标示符,如果没有找到,就去父作用域找,直到找到该变量的标示符或者不再存在父作用域了,这就是作用 ...

  10. [BZOJ1041]圆上的整点

    嗯... 自己看视频讲解? >Click Here< #include<cstdio> #include<queue> #include<iostream&g ...