假设有一个Tuple,里面包含了几个元素:
p = (170, 0.1, 0.6)
if p[1] >= 0.5:
print u'好深的'
if p[2] >= 0.5:
print u'好亮啊'
这段代码本身没有任何问题,但是写的时候需要记住Tuple里每个元素都是什么,才能打印出对的描述。为了让代码更容易看懂:
from collections import namedtuple
Color = namedtuple('Color', ['hue', 'saturation', 'luminosity'])
p = Color(170, 0.1, 0.6)
if p['saturation'] >= 0.5:
print u'好深的'
if p['luminosity'] >= 0.5:
print u'好亮啊'
假设有一个叫做颜色的列表, 需要计算出这个列表里每个颜色的名字被重复了几次
colors = ['red', 'green', 'red', 'blue', 'green', 'red']
d = {}
一般书写方式:
for color in colors:
if color not in d:
d[color] = 0
d[color] += 1
稍好一点的写法:
for color in colors:
d[color] = d.get(color, 0) + 1
最好的写法:
from collections import defaultdict
d = defaultdict(int)
for color in colors:
d[color] += 1
有一个列表,需要将列表中的内容根据长度归类
names = ['raymond', 'rachel', 'matthew', 'roger', 'bettry', 'melissa', 'judith', 'charlie']
一般写法:
d = {}
for name in names:
key = len(name)
if key not in d:
d[key] = []
d[key].append(name)
稍好一点的写法:
for name in names:
key = len(name)
d.setdefault(key, []).append(name)
最好的写法:
d = defaultdict(list)
for name in names:
key = len(name)
d[key].append(name)
tw('@obama', False, 20, True)
如果不看ts函数的内容的话,是无法理解这个函数是干什么用的,如果改写成这样呢:
twitter_search('@obama', retweets=False, numtweets=20, popular=True)
编程的时候经常会碰到这种情况,需要用一个临时的变量来存住一个数值,然后过一会再把这个数值取出来
t = y
y = x + y
x = t
最好的写法:
x, y = y, x+y
所有等号右侧的数值都是旧的数值。这个写法的好处是不需要像原来那样担心每一行顺序的问题。
当改动序列第一位的元素时,经常会引起程序速度变慢
names = ['raymond', 'rachel', 'matthew', 'roger', 'bettry', 'melissa', 'judith', 'charlie']
#以下任意操作都会很慢
del names[0]
names.pop(0)
names.insert(0, 'mark')
最好的方式:
from collections import deque
#将names变为可以在左右两端添加或删减的数据类型
names = deque(['raymond', 'rachel', 'matthew', 'roger', 'bettry', 'melissa', 'judith', 'charlie'])
引自:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。