内置函数

enumerate

enumerate(list[,start=0]):遍历list,并索引

my_list = ['apple', 'banana', 'grapes', 'pear']
for i, value in enumerate(my_list, 1):print(i, value)

输出:

(1, 'apple')
(2, 'banana')
(3, 'grapes')
(4, 'pear')

divmod(x,y)

如果 xint,返回x÷y的商和余数组成的元组,(x//y, x%y)
如果 xfloat,则返回 (math.floor(x / y), x%y)

可以以此很方便的形成二维数组:

>>>[divmod(i, 3) for i in range(9)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

短路求值

三元运算

利用 python 逻辑运算的短路求值特性,我们可以实现python不支持的三元运算符 bool ? a : b

bool and a or b     # 其中要求 a, b 为真

当然有更pythonic 的实现方法:

a if bool else b

and 与 or 优先级

True or True and False    #=> True

造成结果为True的原因是因为短路求值,不是因为存在臆想中的优先级问题--True or (True and False),or and` 一起使用,遵循自左向右计算原则。

参见:短路求值

装饰器

示例1:

table = [i * i for i in range(5)]

或:

def call(*argv, **kwargs):def call_fn(fn):return fn(*argv, **kwargs)return call_fn
@call(5)
def table(n):value = []for i in range(n):value.append(i*i)return value

或:

@list
@call(5)
def table(n):for i in range(n):yield i * i

结果:

len(table), table[3]    #=> (5, 9)

数组(List)

转置矩阵

m = [[1,2],[3,4]]
zip(*m)

碾平list

a = [1, 2, [3, 4], [[5, 6], [7, 8]]]
flatten = lambda x: [y for l in x for y in flatten(l)] \if type(x) is list else [x]
flatten(a)
# [1,2,3,4,5,6,7,8]

list分组

a=[3, 8, 9, 4, 1, 10, 6, 7, 2, 5]
print([a[i:i+3] for i in range(0,len(a),3)])
# [[3, 8, 9], [4, 1, 10], [6, 7, 2], [5]]

字典(Dict)

key,value互换

m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
{v: k for k, v in m.items()}
# {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

Dict.get()

dict.get(key[, default=None]): 如果key存在,返回dict[key],否则返回defaultdefault默认值为None。相比较,dict['key'] 只能获取 dict 中存在的key的值,如果不存在则触发 KeyError。利用此方法,在对字典进行某些运算时会更优雅:

if key not in dct:dct[key] = 0
dct[key] = dct[key] + 1
dct[key] = dct.get(key, 0) + 1
d = {'a': 1,'b': 2,
}
d.get('c', 3)   #=> 3

Dict.setdefault()

Dict.setdefault(key, default):如果存在,返回 dct[key],不存在则把 dct[key] 设为 default 并返回它。当一个默认的值是一个你可以修改的对象的时候这是很有用的。

dct = {}
for key, value in data:if key in dct:dct[key].append(value)else:dct[key] = [value]
dct = {}
for (key, value) in data:group = dct.setdefault(key, []) # key might exist alreadygroup.append(value)

参见:Python:字典的剧本

Python 技巧总结相关推荐

  1. 程序员必知的20个Python技巧

    作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...

  2. 你需要知道的20个常用的Python技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 Python的可读性和简单性是其广受 ...

  3. python%20语言 20培训_Python语言学习之20个值得学习的Python技巧

    点击蓝字获取更多精彩信息 1.字符串反转 使用切片反转字符串. str1="qwert"   rev_str1=str1[::-1]   #输出    # trewq 2.使首字母 ...

  4. 【python技巧】“”、“”等符号操作

    [python技巧] 1)[关于'&' :按照二进制进行与操作,可以用作判断奇偶][https://zhidao.baidu.com/question/308587899.html] & ...

  5. 离散度计算公式 python_被多种离散化场景困扰?8种python技巧!让数据处理更简单...

    前言 python数据处理与分析学习过程中,需要有这样的一种意识,即元"为什么选择了python而不是其他?"既然选择了python,那么在实际应用中,它到底哪里不一样?大家说的方 ...

  6. python大型项目经验_经验丰富程序员才知道的8种高级Python技巧

    全文共2330字,预计学习时长11分钟 图源:unsplash 本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排 ...

  7. python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...

    日常工作几乎离不python.一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家.这些技巧将根据其首字母按A-Z的顺序进行展示. Python相关学习资料获取方式:转发文章+关注私 ...

  8. python初学者_面向初学者的20种重要的Python技巧

    python初学者 Python is among the most widely used market programming languages in the world. This is be ...

  9. 你与数据科学家只差这26条python技巧

    戳蓝字"CSDN云计算"关注我们哦! 作者 | Peter Gleeson 来源 | Python数据科学 编译 | wLsq Python是目前世界上最流行的编程语言之一.因为: ...

  10. python 编程效率_如何有效提升数据分析效率?五大Python技巧

    如何有效提升数据分析效率?相信这是所有数据分析工作者都想解决的问题.本文整理了五大python技巧,分别是Pandas Profiling:使用 Cufflinks 和 Plotly 绘制 Panda ...

最新文章

  1. OpenCV代码提取:cvtColor函数的实现
  2. 读了几篇boosting文献的收获
  3. java if在内存中_java如何将对象暂存到内存中?
  4. 如何安装Favicon
  5. dedecms怎么改php版本_PHP程序员进阶之路
  6. Unity有哪些让做项目事半功倍的插件值得推荐?
  7. C#中lock关键字的用法
  8. 英语语音识别_英语 语音识别_英语语音识别软件 - 云+社区 - 腾讯云
  9. docker pipework
  10. 计算机二级数据库系统知识点,2020年全国计算机二级Access复习知识点:分布式数据库系统...
  11. linux移植win项目找不到pthread.h
  12. python qt designer 重定向_[Python自学] PyQT5-QTDesigner中关联信号和槽
  13. vue3.0实现jsoneditor组件
  14. matlab 波束图,Matlab波束形成程序
  15. 第六章第三十一题(金融应用:信用卡号的合法性验证)(Financial: credit card number validation)
  16. JAVA之ZIP、RAR解压工具类
  17. java 16进制 负数_Java随笔:小心16进制负数
  18. Fail to open the referenced table
  19. 根据出生年月日算出实际的月龄
  20. No module named 'torchvision.ops'的解决办法

热门文章

  1. java 异常面试问题_Java异常面试问答
  2. jenkins的邮件提醒
  3. [nsis]安装包反编译
  4. 用FileZilla搭建的Ftp其他电脑无法访问的问题
  5. 淘宝Web服务器Tengine正式开源
  6. 百分点董事长苏萌:大数据落地有五大要素
  7. Xcode7 插件制作入门
  8. Ubuntu中octopress安装
  9. 多线程依次打印abcabc
  10. Mysql server has gone away