python基础学习-三元表达式+生成式

一、三元表达式

1、普通和三元表达式区别:

1.普通的表达式

def func(x,y):
    if x > y:
        return x
    else:
        return y
?
res = func(1,2)
print(res)

2、三元表达式

语法格式:条件成立时返回的值 if 条件 else 条件不成立时要返回的值

x = 1
y = 2
?
res = x if x > y else y
print(res)
egon = 18
alex = 80
?
res = ‘egon‘ if egon < alex else ‘alex‘
print(res)

二、生成式

1、列表生成式

#格式:[expression for item in iterable in condition]
#原代码:
?
l = [‘alex_dsb‘,‘lxx_dsb‘,‘wxx_dsb‘,‘xxq‘,‘egon_dsb‘]
new_l = []
for name in l:
    if name.endswith(‘dsb‘):
        new_l.append(name)
#改进后:
l = [‘egon_is_sb‘,‘egon_is_dsb‘,‘egon_is_superdsb‘,‘xxq‘,‘egon_dsb‘]
?
new_l = [name for name in l]  # 最基础的列表生成式
new_l = [name for name in l if name.endswith(‘sb‘)]
?
print(new_l)
?
#操作案例:
#把所有小写字母变成大写
l = [‘egon_is_sb‘,‘egon_is_dsb‘,‘egon_is_superdsb‘,‘xxq‘,‘egon_dsb‘]
new_l = [name.upper() for name in l ]
print(new_l)
?
#去掉所有名字的_sb后缀
l = [‘egon_is_sb‘,‘egon_is_sb‘,‘egon_is_superd_sb‘,‘xxq‘,‘egon_sb‘]
new_l = [name.replace(‘_sb‘,‘‘) for name in l]
print(new_l)

2、字典生成式

keys = [‘name‘,‘age‘,‘gender‘]
?
dic = {key:None for key in keys}
print(dic)
items = [(‘name‘,‘egon‘),(‘age‘,18),(‘gender‘,‘male‘)]
?
dict = {k:v for k,v in items if k!=‘gender‘}
print(dict)

3、集合生成式

keys = [‘name‘,‘age‘,‘gender‘]
set1 = {key for key in keys}
print(set1,type(set1))

4、元组生成式(没有元组生成式)

g = (i for i in range(10) if i > 3)
print(g,type(g))
# 输出:<generator object <genexpr> at 0x01D63450> <class ‘generator‘>

5、生成器表达式

g = (i for i in range(10) if i > 3)
# !!!!!!!强调!!!!!!!
# 此时g的内部,一个值都没有
# 只有next的时候,才会产生一个值
?
print(g)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
#方式一:
with open(r‘内容.txt‘,mode=‘rt‘,encoding=‘UTF-8‘) as f:
    res = 0
    for line in f:
        res += len(line)
    print(res)
#方式二:
with open(r‘内容.txt‘,mode=‘rt‘,encoding=‘UTF-8‘) as f:
    res = sum([len(line) for line in f])
    print(res)

#方式三:效率高
with open(r‘内容.txt‘, mode=‘rt‘, encoding=‘UTF-8‘) as f:
    # g = (len(line) for line in f)
    # print(g)
    # res = sum(g)
    # print(res)
    # res = sum((len(line) for line in f))

    # 上述可以简写为如下格式
    res = sum(len(line) for line in f)
    print(res) 

原文地址:https://www.cnblogs.com/dingbei/p/12571202.html

时间: 2024-08-26 08:22:18

python基础学习-三元表达式+生成式的相关文章

python基础学习-三元表达式和lambda表达式

#!/usr/bin/env python # -*- coding:utf-8 -*-  三元运算 if else 的简写 name ="alex" if 1==1 else "SB" #如果条件成立 赋alex 否则 赋SB print(name) #--------------lambda表达式 f2 = lambda a1,a2:a1+a2+100 #等价 下边函数定义 def f1(a1,a2): return  a1+a2+100 #---------l

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

python基础学习09(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #什么是函数 #就是引用,创建,使用 #例子 def foo(): print '233' foo() #返回与函数类型 def foo1():#是一个过程 print 'hello world!' foo1() foo

python基础学习11(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #执行环境 #可调用对象 """ 许多的python 对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象.要调用可调用对象, 函数操作符得紧跟在可调用对象之后.Python 有4

python基础学习2

python中的运算符 1.算术运算符:用来做算术运算的符号 ①.+ :求和,也可以做连接符 ②. - :求差 ③. * : 求积 ④. / :求商 ⑤.% :取余 ⑥.//  :取整 ⑦.**  :次方 注意:只能是数值 print(3*3) #求积结果:9 print(9/2) #相除结果:4.5 print(3**4) #3的4次方,结果:81 print(9//4) #小数部分直接丢掉,取整结果:2 print(13%3) #取余结果:1 运行结果是 9 4.5 81 2 1 比较运算符

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

Python 基础学习 网络小爬虫

<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imgli

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2

Python基础学习(九)

Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.