Python全栈之推导式和生成器

目录
  • 1. 推导式
  • 2. 推导式练习
  • 3. 集合_字典推导式
  • 4. 生成器
    • 4.1 生成器表达式
    • 4.2 生成器函数
  • 5. 小练习
  • 总结

1. 推导式

# ### 推导式 : 通过一行循环判断遍历出一些列数据的方法叫做推导式
"""
语法:
    val for val in iterable
"""
# 1.推导式基本语法
lst = []
for i in range(1,51):
    lst.append(i)
print(lst)
# 改写推导式
lst = [  i for i in range(1,51)  ]
print(lst)
# 小练习
# 1.[1,2,3,4,5] => [2,4,6,8,10]
lst = [ i*2 for i in range(1,6) ]
print(lst)
# 2.带有判断条件的推导式
"""注意点:for后面紧跟的判断条件只能是单项分支."""
"""[1,2,3,4,5,6,7,8,9,10] => [1,3,5,7,9 ... ]"""
lst = [1,2,3,4,5,6,7,8,9,10]
lst_new = []
for i in lst:
    if i % 2 == 1:
        lst_new.append(i)
print(lst_new)
# 改写推导式
lst = [ i for i in lst if i % 2 == 1 ]
print(lst)
# 3.多循环推导式 # 谁♡♢♤谁
lst1 = ["孙杰龙","陈露","曹静怡"]
lst2 = ["王志国","邓鹏","合理"]
lst_new = []
for i in lst1:
    for j in lst2:
        lst_new.append(i+"♡♢♤"+j)
print(lst_new)
# 改写推导式
lst = [ i+"♡♢♤"+j for i in lst1 for j in lst2 ]
print(lst)
# 4.带有判断条件的多循环推导式
lst_new = []
for i in lst1:
    for j in lst2:
        if lst1.index(i) == lst2.index(j):
            lst_new.append(i+"♡♢♤"+j)
print(lst_new)
# 改写推导式
lst = [i+"♡♢♤"+j for i in lst1 for j in lst2 if lst1.index(i) == lst2.index(j)]
print(lst)

2. 推导式练习

# ### 推导式练习题
# (1).{'x': 'A', 'y': 'B', 'z': 'C' } 把字典写成x=A,y=B,z=C的列表推导式
dic = {'x': 'A', 'y': 'B', 'z': 'C' }
lst = []
for k,v in dic.items():
    res = k + "=" + v
    lst.append(res)
print(lst)
# 推导式
lst = [  k + "=" + v for k,v in dic.items()  ]
print(lst)
# (2).把列表中所有字符变成小写  ["ADDD","dddDD","DDaa","sss"]
lst = ["ADDD","dddDD","DDaa","sss"]
lst_new = []
for i in lst:
    lst_new.append(i.lower())
print(lst_new)
# 推导式
lst = [ i.lower() for i in lst ]
print(lst)
# (3).x是0-5之间的偶数,y是0-5之间的奇数 把x,y组成一起变成元组,放到列表当中
# 方法一
lst = []
for x in range(6):
    for y in range(6):
        if x % 2 == 0 and y % 2 == 1:
            lst.append( (x,y) )
print(lst)
# 推导式
lst = [ (x,y) for x in range(6) for y in range(6) if x % 2 == 0 and y % 2 == 1 ]
print(lst)

# 方法二
lst = []
for x in range(6):
    if x % 2 == 0 :
        for y in range(6):
            if y % 2 == 1:
                lst.append( (x,y)  )
print(lst)
# 推导式
lst = [ (x,y) for x in range(6) if x % 2 == 0 for y in range(6) if y % 2 == 1 ]
print(lst)
# (4).使用列表推导式 制作所有99乘法表中的运算
for i in range(1,10):
    for j in range(1,i+1):
        print("{:d}*{:d}={:2d} ".format(i,j,i*j) , end="")
    print()
lst = ["{:d}*{:d}={:2d} ".format(i,j,i*j) for i in range(1,10) for j in range(1,i+1)]
print(lst)
# (5)求M,N中矩阵和元素的乘积
# M = [ [1,2,3],
#       [4,5,6],
#       [7,8,9]  ]
# N = [ [2,2,2],
#       [3,3,3],
#       [4,4,4]  ]
M = [ [1,2,3] ,[4,5,6] , [7,8,9] ]
N = [ [2,2,2] ,[3,3,3] , [4,4,4] ]
"""
M[0][0] * N[0][0] = 2
M[0][1] * N[0][1] = 4
M[0][2] * N[0][2] = 6
M[1][0] * N[1][0] = 12
M[1][1] * N[1][1] = 15
M[1][2] * N[1][2] = 18
M[2][0] * N[2][0] = 12
M[2][1] * N[2][1] = 15
M[2][2] * N[2][2] = 18
"""
# =>实现效果1   [2, 4, 6, 12, 15, 18, 28, 32, 36]
"""双层循环,外层循环动的慢,内层循环动的快,正好符号M N 矩阵的下标"""
lst = []
for i in range(3):
    for j in range(3):
        lst.append(  M[i][j] * N[i][j]   )
print(lst)

# =>实现效果2   [  [2, 4, 6], [12, 15, 18], [28, 32, 36]   ]
# 遍历出三个空的列表
lst = [ [] for i in range(3)]
print(lst)
lst = [    [  M[i][j] * N[i][j] for j in range(3)  ]    for i in range(3)]
print(lst)
"""
[  M[i][j] * N[i][j] for j in range(3)  ]
[ [2, 4, 6]  [12, 15, 18]  [28, 32, 36] ]
"""

3. 集合_字典推导式

# ### 集合推导式
"""
案例:
	满足年龄在18到21,存款大于等于5000 小于等于5500的人,
	开卡格式为:尊贵VIP卡老x(姓氏),否则开卡格式为:抠脚大汉卡老x(姓氏)
	把开卡的种类统计出来
"""
lst = [
    {"name":"赵沈阳","age":18,"money":3000},
    {"name":"赵万里","age":19,"money":5200},
    {"name":"赵蜂拥","age":20,"money":100000},
    {"name":"赵世超","age":21,"money":1000},
    {"name":"王志国","age":18,"money":5500},
    {"name":"王永飞","age":99,"money":5500}
]
setvar = set()
for i in lst:
    print(i) # {'name': '赵沈阳', 'age': 18, 'money': 3000}
    if 18 <= i["age"] <= 21 and 5000 <= i["money"] <= 5500:
        res = "尊贵VIP卡老{}".format(i["name"][0])
    else:
        res = "抠脚大汉卡老{}".format(i["name"][0])
    # 添加到集合中
    setvar.add(res)
print(setvar)
# { 三元运算符 + 推导式 }
#                                                                                                                                     三运运算符 + 推导式
setvar = { "尊贵VIP卡老{}".format(i["name"][0]) if 18 <= i["age"] <= 21 and 5000 <= i["money"] <= 5500 else "抠脚大汉卡老{}".format(i["name"][0]) for i in lst }
print(setvar)
# ### 字典推导式
### 一.enumerate
"""
enumerate(iterable,[start=0])
功能:枚举 ; 将索引号和iterable中的值,一个一个拿出来配对组成元组,通过迭代器返回
参数:
    iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range)
    start:  可以选择开始的索引号(默认从0开始索引)
返回值:迭代器
"""
# 基本语法
from collections import Iterator,Iterable
lst =["王文","吕洞宾","何仙姑","铁拐李","张国老","曹国舅","蓝采和","韩湘子"]
it = enumerate(lst)
it = enumerate(lst,start=100)
print(isinstance(it,Iterator))
# next
print( next(it) )
# for + next (推荐,数据较大时使用)
for i in range(3):
    print(next(it))
# for
for i in it:
    print(i)
# list 强转迭代器
print(list(it))
# (1) 字典推导式 配合 enumerate 来实现
dic = {k:v for k,v in enumerate(lst,start=100)}
print(dic)
"""
(100, '王文')
(101, '吕洞宾')
(102, '何仙姑')
(103, '铁拐李')
(104, '张国老')
(105, '曹国舅')
(106, '蓝采和')
(107, '韩湘子')
"""
# (2) 使用dict强转迭代器,瞬间得到字典
dic = dict( enumerate(lst,start=100) )
print(dic)
### 二.zip
"""
特点:按照索引配对
zip(iterable, ... ...)
    功能: 将多个iterable中的值,一个一个拿出来配对组成元组,通过迭代器返回
    iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range)
返回: 迭代器
"""
# 基本语法
# lst1 = ["孙开启","王永飞","于朝志"]
# lst2 = ["薛宇健","韩瑞晓","上朝气"]
# lst3 = ["刘文博","历史园","张光旭"]
# 在索引下标同时存在时,才会进行配对,否则舍弃.
lst1 = ["孙开启","王永飞","于朝志"]
lst2 = ["薛宇健","韩瑞晓"]
lst3 = ["刘文博"]
it = zip(lst1,lst2,lst3)
print(list(it))
# (1) 字典推导式 配合 zip 来实现
lst_key = ["ww","axd","yyt"]
lst_val = ["王维","安晓东","杨元涛"]
# ('ww', '王维'), ('axd', '安晓东'), ('yyt', '杨元涛')
dic = {k:v   for k,v in zip(lst_key , lst_val) }
print(dic)
# (2) 使用dict强转迭代器,瞬间得到字典
dic = dict( zip(lst_key , lst_val) )
print(dic)

4. 生成器

4.1 生成器表达式

# ### 生成器
"""
#生成器本质是迭代器,允许自定义逻辑的迭代器
#迭代器和生成器区别:
	迭代器本身是系统内置的.重写不了.
    而生成器是用户自定义的,可以重写迭代逻辑
#生成器可以用两种方式创建:
    (1)生成器表达式  (里面是推导式,外面用圆括号)
    (2)生成器函数    (用def定义,里面含有yield)
"""
# (1) 生成器表达式 (里面是推导式,外面用圆括号)
gen = ( i for i in range(10) )
print(gen)
# 判断类型
from collections import Iterator,Iterable
print(isinstance(gen,Iterator))
# 1.next 调用生成器
print(next(gen))
print(next(gen))
# 2.for + next 调用生成器
for i in range(3):
    print(next(gen))
# 3.for 调用生成器所有数据
for i in gen:
    print(i)
# 4.list强转生成器,瞬间得到所有数据
gen = ( i for i in range(10) )
print(list(gen))
# print(next(gen)) error  # StopIteration

4.2 生成器函数

# ### 生成器函数
"""
# yield 类似于 return
共同点在于:执行到这句话都会把值返回出去
不同点在于:yield每次返回时,会记住上次离开时执行的位置 , 下次在调用生成器 , 会从上次执行的位置往下走
		   而return直接终止函数,每次重头调用.
yield 6 和 yield(6) 2种写法都可以 yield 6 更像 return 6 的写法 推荐使用
"""
# (1) 基本语法
def mygen():
    print("111")
    yield 1
    print("222")
    yield 2
    print("333")
    yield 3
# 初始化生成器函数  => 返回生成器对象 => 简称生成器
gen = mygen()
# 第一次调用
res = next(gen)
print(res)
# 第二次调用
res = next(gen)
print(res)
# 第三次调用
res = next(gen)
print(res)
# 第四次调用
"""
StopIteration error
res = next(gen)
print(res)
"""
"""
# 第一次调用
print("111")  yield 1 保存当前第13行代码的状态,把1返回,并且等待下一次调用
# 第二次调用
从上一次保存的位置13行往下走, print("222") yield 2 保存当前第16行代码的状态,把2返回,并且等待下一次调用
# 第三次调用
从上一次保存的位置16行往下走, print("333") yield 3 保存当前第19行代码的状态,把3返回,并且等待下一次调用
# 第四次调用
因为没有更多的yield 返回数据,所有停止迭代.出现报错异常.
"""
# (2) 优化生成器代码
"""生成器应用的场景是在大数据的范围中使用,切记不可直接用for遍历所有,可能无法短时间内获取所有数据"""
def mygen():
    for i in range(1,101):
        yield i
# 初始化生成器函数 => 生成器
gen = mygen()
print("<=====>")
for i in range(30):
    num = next(gen)
    print("我的球衣号码是{}".format(num))
print("<=====>")
for i in range(40):
    num = next(gen)
    print("我的球衣号码是{}".format(num))

# (3) send的使用方式 (给上一个yield发送数据)
"""
# next和send区别:
	next 只能取值
	send 不但能取值,还能发送值
# send注意点:
	第一个 send 不能给 yield 传值 默认只能写None
	最后一个yield 接受不到send的发送值
"""
def mygen():
    print("start")
    res = yield "内部1"
    print(res,"<==内部==>")
    res = yield "内部2"
    print(res,"<==内部==>")
    res = yield "内部3"
    print(res,"<==内部==>")
    print("end")
# 初始化生成器函数 => 生成器
gen = mygen()
# 第一次调用生成器
"""
第一次调用生成器时,因为没有遇到yield保存的代码位置,
无法发送数据,默认第一次只能发送None
"""
res = gen.send(None)
print(res,"<==外部==>")
# 第二次调用生成器
res = gen.send("100")
print(res,"<==外部==>")
# 第三次调用生成器
res = gen.send("200")
print(res,"<==外部==>")
# 第四次调用生成器
"""
error
res = gen.send("300")
print(res,"<==外部==>")
"""
"""
使用send调用生成器,第一次发送时必须是None,因为还没有遇到yield保存的代码位置
res = gen.send(None)  走到mygen生成器函数中
print("start")
res = yield "内部1"  执行第80行 ,保存退出,记录当前代码位置,将 "内部1" 返回
在98行接受数据  res = "内部1"  print(内部1,"<==外部==>")
第二次调用生成器
res = gen.send("100") 把100这个数据发送给上一次代码保存的位置80行进行接受. => 导致 80行 res = 100
打印81行  print(100 ,"<==内部==>")
执行83行  res = yield "内部2"  保存退出,记录当前代码位置,将 "内部2" 返回
执行102行 res = gen.send("100") => "内部2" print("内部2","<==外部==>")
....
依次类推 ...
到第四次调用时, 因为没有更多的yield 返回数据,gen.send(300)无法接受到返回值,所以出现停止迭代 StopIteration的报错,程序终止;
"""
# (4) yield from 的使用
"""将一个可迭代对象变成一个迭代器返回	"""
def mygen():
    lst = ["张磊","李亚峰","刘一峰","王同培"]
    yield from lst
# 初始化生成器函数
gen = mygen()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
# print(next(gen)) # StopIteration
# (5) 斐波那契数列
"""使用生成器分段获取所有内容,而不是一股脑的把所有数据全部打印"""
"""1 1 2 3 5 8 13 21 34 .... """
def mygen(maxval):
    a,b = 0,1
    i = 0
    while i < maxval:
        # print(b)
        yield b
        a,b = b,a+b
        i += 1
# mygen(10)
gen = mygen(10)
# 第一次获取
for i in range(3):
    print(next(gen))
# 第二次获取
for i in range(5):
    print(next(gen))

5. 小练习

# 1.用推导式写如下程序
# (1)构建如下列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
lst = [i * 2 for i in range(10)]
lst = [i for i in range(0,19,2) ]
print(lst)
# (2)lst = ['alex', 'WuSir', '老男孩', '神秘男孩'] 将lst构建如下列表:['alex0', 'WuSir1', '老男孩2', '神秘男孩3']
lst = ['alex', 'WuSir', '老男孩', '神秘男孩']
# 方法一
# lst = [i + str(lst.index(i)) for i in lst]
# 方法二
lst = [lst[i] + str(i) for i in range(len(lst)) ]
print(lst)
# (3)构建如下列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
lst = [ (j,i) for j in range(0,6) for i in range(1,7) if i-j == 1]
print(lst)
lst = [(i,i+1) for i in range(6)]
print(lst)
# (4)求出50以内能被3整除的数的平方,并放入到一个列表中。
lst = [i ** 2 for i in range(51) if i % 3 == 0]
print(lst)
# (5)M = [[1,2,3],[4,5,6],[7,8,9]], 把M中3,6,9组成新列表
M = [[1,2,3],[4,5,6],[7,8,9]]
lst = [ i[-1] for i in M  ]
print(lst)

# (6)构建如下列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']
lst = [ "python{}期".format(i) for i in range(1,11) if i != 5 ]
print(lst)
# (7)过滤掉长度小于3的字符串列表 , 并转换成大写字母
lst = ["sdfsdfsdfsdf","234","你说的符号是","a","ab"]
lst = [ i.upper() for i in lst if len(i) >=3 ]
print(lst)
# (8)除了大小王,里面有52项,每一项是一个元组,请返回如下扑克牌列表[('红心','2'),('草花','J'), …('黑桃','A')]
lst1 = ["红心","草花","黑桃","方片"]
lst2 = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
lst = [(i,j) for i in lst1 for j in lst2]
print(lst)
# 2.用推导式写如下程序
lst1 = {
		'name':'alex',
		'Values':[
			{'timestamp': 1517991992.94,'values':100,},
			{'timestamp': 1517992000.94,'values': 200,},
			{'timestamp': 1517992014.94,'values': 300,},
			{'timestamp': 1517992744.94,'values': 350},
			{'timestamp': 1517992800.94,'values': 280}
		]
	}
# 将lst1 转化成如下 lst2:
lst2 = [
	[1517991992.94, 100],
	[1517992000.94, 200],
	[1517992014.94, 300],
	[1517992744.94, 350],
	[1517992800.94, 280]
]
# 方法一
lst2 = [ [i["timestamp"] , i["values"]] for i in lst1["Values"] ]
print(lst2)
# 方法二
lst2 = [ list(i.values()) for i in lst1["Values"]]
print(lst2)

# 3.读取一个文件所有内容,通过生成器调用一次获取一行数据.
def mygen(filename):
	with open(filename,mode="r+",encoding="utf-8") as fp:
		for i in fp:
			yield i
gen = mygen("ceshi111.txt")
for i in range(3):
	print(next(gen))
for i in range(6):
	print(next(gen))
# 4.将普通求和函数改写成yield写法
print("<====>")
def add(a,b):
	yield a + b
mygen  = add(34,5)
for i in mygen:
	print(i)

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python生成器generator:深度学习读取batch图片的操作

    在深度学习中训练模型的过程中读取图片数据,如果将图片数据全部读入内存是不现实的,所以有必要使用生成器来读取数据. 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了. 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间.在Python

  • python列表推导式操作解析

    这篇文章主要介绍了python列表推导式操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本格式 ​[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] 例子:将a列表中大于5的数*10储存到b中 一般操作: a = [5,10,15,20] b = [] for n in a: if n > 5: b.append(n*10) print(b) 使用推导式可以令代码简洁 a = [5,10,15

  • 简单了解python 生成器 列表推导式 生成器表达式

    生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器. 通过以下两种方式构建一个生成器: 1.通过生成器函数 2.生成器表达式 生成器函数: 函数 def func1(x): x += 1 return x print(func1(5)) 生成器函数 def func1(x): x += 1 yield x g_obj = func1(5) print(g_obj.__next__()) 一个next对应一个yield. yield VS return return 结束函数,给函

  • Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】

    本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. 元组的元素访问和列表一样,只不过返回的仍然是元组对象. 3. 列表关于排序的方法 list.sorted()是修改原列表对象,元组没有该方法.如果要对元组排 zip 生成器推导式创建元组 元组总结 元组 tuple的定义 列表属于可变序列,可以任意修改列表中的元素.元组属于不可变序列,不能修改元组

  • python基础学习之生成器与文件系统知识总结

    一.生成器 首先解释迭代器. 能以一种一致的方式对序列进行迭代(比如列表中的对象或文件中的行)是Python的一个重要特点.这是通过一种叫做迭代器协议(iterator protocol,它是一种使对象可迭代的通用方式)的方式实 现的,一个原生的使对象可迭代的方法. some_dict = {'a': 1, 'b': 2, 'c': 3} for key in some_dict: print(key) #输出: a c b 迭代器是一种特殊对象,它可以在诸如for循环之类的上下文中向Pytho

  • Python列表推导式与生成器用法分析

    本文实例讲述了Python列表推导式与生成器用法.分享给大家供大家参考,具体如下: 1. 先看两个列表推导式 def t1(): func1 = [lambda x: x*i for i in range(10)] result1 = [f1(2) for f1 in func1] print result1 def t2(): func2 = [lambda x, i=i: x*i for i in range(10)] result2 = [f2(2) for f2 in func2] pr

  • python生成器推导式用法简单示例

    本文实例讲述了python生成器推导式用法.分享给大家供大家参考,具体如下: 1.生成器推导式是继列表推导式后的有一中python推导式,他比列表推导式速度更快,占用的内存也更少. 2.使用生成器对象时,可以根据需要将他转化为列表或者元组,也可以是哟个生成器对像__next__()方法或内置函数next()进行遍历,其具有惰性求值的特点,进行一次遍历后便不能再次方位内部元素,即访问一次立马清空生成器对象 >>> g = ((i+2)**2 for i in range(10)) >

  • Python列表推导式与生成器表达式用法示例

    本文实例讲述了Python列表推导式与生成器表达式用法.分享给大家供大家参考,具体如下: 和列表一样,列表推导式也采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环.阅读理解列表表达式的推荐做法是先从里面的for循环开始,向右查看是否有if条件,然后将推导式开始的那个表达式映射到每一个匹配的元素上去. >>> even_numbers = [x for x in range(10) if x%2 == 0] &g

  • Python全栈之推导式和生成器

    目录 1. 推导式 2. 推导式练习 3. 集合_字典推导式 4. 生成器 4.1 生成器表达式 4.2 生成器函数 5. 小练习 总结 1. 推导式 # ### 推导式 : 通过一行循环判断遍历出一些列数据的方法叫做推导式 """ 语法: val for val in iterable """ # 1.推导式基本语法 lst = [] for i in range(1,51): lst.append(i) print(lst) # 改写推导式

  • Python 推导式、生成器与切片问题解决思路

    推导式.生成器与切片 一.实验要求 1.理解并掌握序列中的常用操作.2.理解并掌握推导式.切片等用法并能解决实际问题. 二.实验内容 1,编写程序,测试字符的出现频率. #use dict method1 data = ['a','2',2,3,6,'2','b',4,7,2,'6','d',6,'a','z'] frequences=dict() for item in data: if item in frequences: frequences[item] += 1 else: frequ

  • python中列表推导式与生成器表达式对比详解

    目录 概述 列表推导式 生成器表达式 使用场景选择 参考 总结 概述 Python中的列表推倒式(List Comprehension) 和 生成器表达式(Generator Expression)是两种很相似的表达式,但含义却不大不同,这里做一个对比. 列表推导式 列表推导式是比较常用的技术,能将本来需要for loop 和 if else 语句的情况简化成一条指令,最终得到一个列表对象: even = [e for e in range(10) if e % 2 == 0] 具体细节不过多展

  • 基于Python列表解析(列表推导式)

    列表解析--用来动态地创建列表 [expr for iter_var in iterable if cond_expr] 例子一: map(lambda x: x**2, range(6)) [0, 1, 4, 9, 16, 25] [x**2 for x in range(6)] [0, 1, 4, 9, 16, 25] 列表解析式可以取代内建的map()函数以及lambda,而且++效率更高++. 例子二: seq = [11, 10, 9, 8, 7, 6] filter(lambda x

  • python全栈要学什么 python全栈学习路线

    IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这四大方面. 全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人.就是与这项技能有关的都会,都能够独立的完成. 全栈只是个概念,也分很多种类.真正的全栈工程师涵盖了web开发.DBA .爬虫 .测试.运维,要学的内容那是相当的巨量.就web开发方向而言需要学习的内容:前端知识 包

  • python全栈知识点总结

    全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人.就是与这项技能有关的都会,都能够独立的完成. 全栈只是个概念,也分很多种类.真正的全栈工程师涵盖了web开发.DBA .爬虫 .测试.运维,要学的内容那是相当的巨量.就web开发方向而言需要学习的内容:前端知识 包括HTML5 CSS3 JS Jquery Ajax,后端至少需要能够熟练使用Django和tornado,当然会flask更好. 扩展资料: 全栈工程师的厉害之处并不是他掌握很多知识,可以一个人干多份工作.而是

  • python全栈开发语法总结

    太多的小伙伴正在学习Python,就说自己以后要做全栈开发,大家知道这是做什么的吗?我们现在所知道的知识点,哪些是以后你要从事这个全栈所需要的呢?从名字上我们可以获知,"全"一样是掌握全部内容,没错,这里就是要自己掌握全部编程技能,足够独立开发的人,因此全栈士不如也说叫"全战士",如果想做,那就看下面能用到的语法吧. 1.中文编码-UTF8字符集 #!/usr/bin/env python # coding:utf8 2.数值 a = 1 b = 2.1 print

  • Python简洁优雅的推导式示例详解

    前言 推导式是从一个或者多个迭代器快速创建序列的一种方法.它可以将循环和条件判断结合,从而避免冗长的代码.推导式是典型的 Python 风格 Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮助你在某些场合写出较为精简酷炫的代码.但没有它,也不会有太多影响.Python语言有几种不同类型的推导式. 1. 列表推导式 列表推导式是一种快速生成列表的方式.其形式是用方括号括起来的一段语句,如下例子所示: lis = [x * x for x in range(1, 10)] prin

随机推荐