1.连接字符串尽量用format,两个的时候可以用 +

name = "lxw"

age = 24

x = "{0}{1}".format(name, age) #YES

print(type(x))

2.避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建不必要的临时对象, 并且导致二次方而不是线性的运行时间.

# 可以将每个子串加入列表, 然后在循环结束后用 .join 连接列表.

list_ = ['m','i','t','c','hell']

print(''.join(list_))

3.推荐使用with语句以管理文件

with open(...) as f:

f.write(...)

4.在不复杂的前提下建议使用列表推导式

for i in [1,2,3,4,5]:

if i != 1:

print('Yes')

else:

print('No')

# 有if和else的列表推导式

[print('Yes') if i == 1 else print('No') for i in [1,2,3,4,5]]

# 只有if的列表推导式

[print('Yes') for i in [1,2,3,4,5] if i == 1]

# 列表推导式实现对list的append,一行完成定义list和append。

def num0():

a = [x for x in range(10)]

print(a)

num0()

# 两层for循环

matrix = [

[1, 2, 3],

[4, 5, 6],

[7, 8, 9],

]

flattened = []

'''

for row in matrix:

for i in row:

flattened.append(i)

'''

[flattened.append(i) for row in matrix for i in row ]

print(flattened)

# 字典的推导式

input_dict = {'Name':'Mitchell'}

changed = {value: key for key, value in input_dict.items()} # 将字典的value和key互换

print(changed)

# 集合的推导式

words_list = ['Apple','Banana','Cat','Dog']

chars = {w[0] for w in words_list} # 用列表所有元素的首字母生成集合

print(chars)

5.装饰器

from functools import wraps

import time

# 定义装饰器

def login(text): # 定义一个可以传入参数的装饰器,需要在嵌套一个函数

def time_calculate(func):

def wrapper(*args,**kargs):

start_time = time.time()

f = func(*args,**kargs)

exec_time = time.time() - start_time

print('执行时间为: {}s'.format(exec_time))

return f

return wrapper

print(text)

return time_calculate

@login('Hello World!')

def add_num2(a, b):

return a + b

add_num2(1, 2)

6.生成器

# 例子:根据DataFrame中的列的索引返回Excel中的对应的列标签(如0对应A),用到了生成器。

from string import ascii_lowercase,ascii_uppercase # 小写大写字母

import itertools

def iter_all_strings():

for size in itertools.count(1):

for s in itertools.product(ascii_uppercase, repeat=size):

yield "".join(s)

def dict_location():

list_location = []

for s in iter_all_strings():

list_location.append(s)

if s == 'ZZ':

break

a = list(range(0,716))

excel_dict = dict(zip(a,list_location))

return excel_dict

dict_location()

蟹蟹

python 生成器装饰器_python: 生成器,装饰器以及列表推导式写法相关推荐

  1. Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)

    前些天听了南京大学周耿老师关于"基尼系数计算"的直播课,需要时间好好消化,便有了整理此篇文章的想法. 1 基尼系数 1.1 简介 1912年意大利经济学家基尼,设计了一个测度社会贫 ...

  2. 【技能树共建】Python 列表推导式

    Python 列表推导式是什么 列表推导式是 Python 语言特有的一种语法结构,也可以看成是 Python 中一种独特的数据处理方式, 它在 Python 中用于 转换 和 过滤 数据. 其语法格 ...

  3. 迭代列表不要For循环,这是Python列表推导式最基本的概念

    如果你还在使用 For 循环迭代列表,那么你需要了解了解列表推导式,看看它的基本概念都是什么. 列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅 ...

  4. python 优雅的 列表推导式(for in if)生成器表达式 集合推导式和字典推导式 列表动态构建器(不用先创建空容器【空列表】,再一个一个append()进去那样麻烦了)

    文章目录 用于创建列表也是非常方便的,比如获取当前连接的所有Intel Realsense摄像头序列号 写代码的时候偶然将这段优雅的代码码了出来,感觉很神奇,就去搜索,原来这种语法叫做列表推导式(fo ...

  5. python列表推导式生成随机数_python 【迭代器 生成器 列表推导式】

    python [迭代器  生成器  列表推导式] 一.迭代器 1.迭代器 如何从列表.字典中取值的 index索引 ,key for循环 凡是可以使用for循环取值的都是可迭代的 可迭代协议 :内部含 ...

  6. python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式

    python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...

  7. python列表推导式生成随机数_Python:列表推导式/生成器推导式

    一,列表推导式和生成器表达式 l = [i for i in range(10)] print(l) l1 = ['选项%s'%i for i in range(10)] print(l1) 1.把列 ...

  8. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  9. python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    一.三元表达式 语法:[成立1 if condition1 else成立2 if condition2 else ...if 成立N conditionN else 不成立] sex = 'man' ...

最新文章

  1. iOS动画系列之八:使用CAShapeLayer绘画动态流量图
  2. 长度限制的队列Python
  3. Vagrant搭建可移动的PHP开发环境
  4. 太神奇了!使用C#实现自动核验健康码:(1)二维码识别
  5. centos6.5 MySQL 服务器_启用CentOS6.5 64位安装时自带的MySQL数据库服务器
  6. HTML 中多媒体设置:1、滚动字幕及滚动图片的设置 2、音乐视频的插入
  7. 6-4-JSP隐式对象
  8. 【网络信息安全】网络信息安全概述
  9. 第 12 章 执行引擎
  10. linux查看/etc/fastab,/etc/fastab文件丢失致系统宕机的解决方案
  11. Raffi Krikorian 为“在运行中进行架构重写”提供了指南
  12. 分享一款在线考试学习系统.net源码
  13. 如何查询服务器jdk版本信息,linux服务器jdk版本查看_linux如何查看jdk版本
  14. 2020最新版前端学习路线图--Javascript网页编程重点知识
  15. CDA备考学习笔记——基础知识篇(三)
  16. 烤仔TVのCCW丨存储押金代付
  17. 利用node爬取王者荣耀英雄信息,并存入数据库
  18. 二维码技术在证卡上的应用
  19. 设计模式-装饰器模式 C++
  20. 苹果设备尺寸和控件尺寸

热门文章

  1. css3的新增选择器 200303
  2. selenium-行为链-ActionChains-0223
  3. linux-bzip2压缩
  4. mysql导出表部分数据
  5. 监控SRE的黄金信号
  6. Git由浅入深之分支管理
  7. Android-构建不同环境的Apk
  8. vss团队开发工具使用(个人学习心得)
  9. 面试精讲之面试考点及大厂真题 - 分布式专栏 18 谈谈怎么理解幂等,接口如何保证幂等
  10. JavaScript 中遍历对象的属性 1