Pythonic
这个词翻译过来就是 这很python,其产生的目的就是写出更简洁的,没有冗余的python代码。
1.元素交换
a, b = b, a
看到网上有人解释的很好,首先,建立元组的重点不在于括号‘()’,而是在于逗号‘,’,例如x=(1),你打印会发现x并不是一个元组,而 x=1,,这样打印x就是一个元组。
所以,a,b = b,a,这个等式的右边就是一个(b,a)元组
然后加入一个很重要的概念叫元组解包,就是把一个元组解开直接赋予几个变量,例如x y z = (a,b,c),这样会得到x=a,y=b,z=c
注意的是如果变量个数和元素个数不相等时会报错
所以最终我们可以得到一种看似神奇简便的交换变量值得写法a,b=b,a
2.迭代元素的同时获取索引
list = [1, 4, 9]
for i, val in enumerate(list):
print(i, '-->', val)
3.字符串的拼接
names = ['Tom', 'Jack', 'Sam']
','.join(names)
+操作都会产生新字符串,造成内存浪费,而join,整个过程中只会产生一个字符串对象
4.列表操作
from collections import deque names = deque(['c', 'd', 'e'])
names.popleft()
names.appendleft('b')
names.append('f')
deque模块是python标准库collections中的一项,是一个链表结构,它提供了两端都可以操作的序列,这意味着,在序列的前后你都可以执行添加或删除操作。所以,避免使用list。
5.python解析赋值
student = ['Tom', 18, 'male']
name, age, gender = student
print(name, age, gender)
# Tom 18 male num_list = [100, 19, 20, 98]
first, *left_num_list, last = num_list
print(first, left_num_list, last)
# 100 [19, 20] 98
student = {
'name': 'Tom',
'age': 18
} # python3
for k, v in student.items():
print('k', '-->', v)
6.列表生成式
# 生成1-100的奇数
odd = [i for i in range(1, 100) if i % 2 == 1] # 集合a,b分别去一个数,找出和大于100的所有组合
result = [(x, y) for x in a_set for y in b_set if x + y > 100]
当前用户home目录下所有的文件列表:[ item for item in os.listdir(os.path.expanduser('~')) if os.path.isfile(item) ]
当前用户home目录下所有的目录列表:[ item for item in os.listdir(os.path.expanduser('~')) if os.path.isdir(item) ]
当前用户home目录下所有目录的目录名到绝对路径之间的字典:{ item: os.path.realpath(item) for item in os.listdir(os.path.expanduser('~')) if os.path.isdir(item) }
7.python判断数字的区间
0 < a < 10
Pythonic的更多相关文章
- 一些Python的惯用法和小技巧:Pythonic
Pythonic其实是个模糊的含义,没有确定的解释.网上也没有过多关于Pythonic的说明,我个人的理解是更加Python,更符合Python的行为习惯.本文主要是说明一些Python的惯用法和小技 ...
- python gui之tkinter界面设计pythonic设计
ui的设计,控件id的记录是一件比较繁琐的事情. 此外,赋值和读取数据也比较繁琐,非常不pythonic. 有没有神马办法优雅一点呢?life is short. 鉴于控件有name属性,通过dir( ...
- [python]pythonic的字典常用操作
注意:dct代表字典,key代表键值 1.判断字典中某个键是否存在 实现 dct.has_key(key) #False 更Pythonic方法 key in dct #False 2.获取字典中的值 ...
- Pythonic八荣八耻
以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...
- 如何让你的Python代码更加pythonic ?
pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少. 以下为了简略,我们用P表示pythonic的写法,NP表示non-pythonic的写法,当然此P-NP非彼P-N ...
- Be Pythonic ,Google Python Style Guide
为了更规范的写代码,变得更专业 分号 1 不在句末添加分号,不用分号在一行写两句代码 行长度 2 每行不超过80字符,python会隐式行连接圆括号,中括号,花括号中的字符,如多参数方法调用可以写为多 ...
- 内置方法+lambda是pythonic的利器
python可以写的非常简洁,通过使用内置的map,reduce,filter,lambda方法,非常具有文艺范. 举个例子,例如 def fromIpToNum(ipAddr): return ...
- [Python]更加Pythonic的多个List合并和Python的安利
原题: https://segmentfault.com/q/1010000005904259 问题: 倘若存在 L=[ [1,2,3],[4,5,6],[7,8,9]] 这样的列表,如何把合并成[1 ...
- Pythonic到底是什么玩意儿?
http://blog.csdn.net/gzlaiyonghao/article/details/2762251 作者:Martijn Faassen 译者:赖勇浩(http://blog.csdn ...
- python pythonic是什么?
原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0 注:Martijn 是 Zope 领域的专家,他为 Zope 系列产品做了许 ...
随机推荐
- mysql2 - 基础
一.SQL 练习 在java1701下,创建Stuednt 表,并插入以下数据: 增加创建时间字段,如下: 更改所有时间为当前时间: 二.数据库基础知识 1. 关系模型 1.1 表 table.列 c ...
- 避免Toast重复弹出
Toast.matkText才会创建一个新的实例 private Toast toast = null; private void checkToastResult() { if (toast != ...
- BUNOJ 1011
字符串处理的题.原题链接 AC代码: #include<cstring> #include<cstdio> #include<string> #include< ...
- Codeforces446C - DZY Loves Fibonacci Numbers
Portal Description 给出一个\(n(n\leq3\times10^5)\)个数的序列,进行\(m(m\leq3\times10^5)\)次操作,操作有两种: 给区间\([L,R]\) ...
- python+selenium+autoit实现文件上传
问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.fin ...
- requests+多进程poll+pymongo实现抓取小说
今天看着有个很吸引人的小说作品信息:一家只在深夜开门营业的书屋,欢迎您的光临.作为东野奎吾<深夜食堂>漫画的fans,看到这个标题按捺不住我的好奇心........ 所以我又抓下来了,总共 ...
- <CEPH中国-深圳站-技术交流会演讲PPT> YY云平台Ceph Block应用实践 & 我写的书 《CEPH实战》
YY云平台Ceph Block应用实践 http://s3.yyclouds.com/public/YY%E4%BA%91%E5%B9%B3%E5%8F%B0Ceph%E5%AE%9E%E8%B7%B ...
- Access denied for user(这个几乎让我怀疑人生的异常)
昨天一时兴起,打算根据自己的某些想法,业余时间写一个简单的项目,用以巩固那些重要的知识,以及练手一些即将学习的技术. 然而才一开始,便有一盆冷水迎面而来,在搭建整个框架环境的时候竟然就被卡住了!主要是 ...
- android的Live架构
MVC.MVP.MVVM的选择 一开始我们在这几种框架上的选择上就没花太多的心思,因为他们都只是为了实现清晰的分层逻辑,差异化的地方无非是讲UI逻辑.交互逻辑.数据绑定逻辑.业务逻辑堆放在那一层的问题 ...
- SSH2三大框架SQL查询
/** * 查询省份名称 * @author YHD * @return * @see */ @SuppressWarnings("unchecked") @Override pu ...