www.5197.com-澳门新蒲京娱乐场官网

热门关键词: www.5197.com,澳门新蒲京娱乐场官网

35 个有关 Python 的小技巧澳门新蒲京娱乐场官网

10 命名列表切割方式

19 命名元组

28 私下认可字典的简易树状表达

17 字典推导

 m = {x: x ** 2 for x in range(5)} m{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}  m = {x: 'A'   str(x) for x in range(10)} m{0: 'A0', 1: 'A1', 2: 'A2', 3: 'A3', 4: 'A4', 5: 'A5', 6: 'A6', 7: 'A7', 8: 'A8', 9: 'A9'}
 a = [1, 2, 3, 4, 5, 6] zip(*([iter(a)] * 2))[(1, 2), (3, 4), (5, 6)]  group_adjacent = lambda a, k: zip(*([iter(a)] * k)) group_adjacent(a, 3)[(1, 2, 3), (4, 5, 6)] group_adjacent(a, 2)[(1, 2), (3, 4), (5, 6)] group_adjacent(a, 1)[(1,), (2,), (3,), (4,), (5,), (6,)]  zip(a[::2], a[1::2])[(1, 2), (3, 4), (5, 6)]  zip(a[::3], a[1::3], a[2::3])[(1, 2, 3), (4, 5, 6)]  group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k))) group_adjacent(a, 3)[(1, 2, 3), (4, 5, 6)] group_adjacent(a, 2)[(1, 2), (3, 4), (5, 6)] group_adjacent(a, 1)[(1,), (2,), (3,), (4,), (5,), (6,)]
 a, b = 1, 2 a, b = b, a a, b(2, 1)

20 世袭命名元组

8 负数步长切割列表

29 对象到唯风华正茂计数的映射

 import itertools, collections value_to_numeric_map = collections.defaultdict(itertools.count().next) value_to_numeric_map['a']0 value_to_numeric_map['b']1 value_to_numeric_map['c']2 value_to_numeric_map['a']0 value_to_numeric_map['b']1
 a = [1, 2, 3] b = ['a', 'b', 'c'] z = zip(a, b) z[(1, 'a'), (2, 'b'), (3, 'c')] zip(*z)[(1, 2, 3), ('a', 'b', 'c')]

26 可排序词典

14 用压缩器反转字典

34 可链接迭代器

 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a[::-1][10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] a[::-2][10, 8, 6, 4, 2, 0]

30 最大和纤维的多少个列表成分

 g = (x ** 2 for x in xrange(10)) next(g)0 next(g)1 next(g)4 next(g)9 sum(x ** 3 for x in xrange(10))2025 sum(x ** 3 for x in xrange(10) if x % 3 == 1)408

11 列表以致迭代器的削减和平解决压缩

12 列表相邻成分压缩器

 m = dict() m['a']Traceback (most recent call last): File "stdin", line 1, in moduleKeyError: 'a' m = collections.defaultdict(int) m['a']0 m['b']0 m = collections.defaultdict(str) m['a']'' m['b']  = 'a' m['b']'a' m = collections.defaultdict(lambda: '[default value]') m['a']'[default value]' m['b']'[default value]'

27 默许词典

3 扩充拆箱

 a = [random.randint(0, 100) for __ in xrange(100)] heapq.nsmallest(5, a)[3, 3, 5, 6, 8] heapq.nlargest(5, a)[100, 100, 99, 98, 98]
 a, b, c = 1, 2, 3 a, b, c(1, 2, 3) a, b, c = [1, 2, 3] a, b, c(1, 2, 3) a, b, c = (2 * i   1 for i in range(3)) a, b, c(1, 3, 5) a, (b, c), d = [1, (2, 3), 4] a1 b2 c3 d4
 Q = collections.deque() Q.append(1) Q.appendleft(2) Q.extend([3, 4]) Q.extendleft([5, 6]) Qdeque([6, 5, 2, 1, 3, 4]) Q.pop()4 Q.popleft()6 Qdeque([5, 2, 1, 3]) Q.rotate(3) Qdeque([2, 1, 3, 5]) Q.rotate(-3) Qdeque([5, 2, 1, 3])

16 生成器表明式

 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a[-4:-2][7, 8]
 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a[2:8][2, 3, 4, 5, 6, 7]
 last_three = collections.deque(maxlen=3) for i in xrange(10):... last_three.append(i)... print ', '.join(str(x) for x in last_three)...00, 10, 1, 21, 2, 32, 3, 43, 4, 54, 5, 65, 6, 76, 7, 87, 8, 9

2 拆箱变量沟通

13 在列表中用压缩器和迭代器滑动取值窗口

 Point = collections.namedtuple('Point', ['x', 'y']) p = Point(x=1.0, y=2.0) pPoint(x=1.0, y=2.0) p.x1.0 p.y2.0
 m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} m{'d': 4, 'a': 1, 'b': 2, 'c': 3} {v: k for k, v in m.items()}{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
 def n_grams(a, n):... z = [iter(a[i:]) for i in range(n)]... return zip(*z)... a = [1, 2, 3, 4, 5, 6] n_grams(a, 3)[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)] n_grams(a, 2)[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)] n_grams(a, 4)[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)]
 A = collections.Counter([1, 2, 2]) B = collections.Counter([2, 2, 3]) ACounter({2: 2, 1: 1}) BCounter({2: 2, 3: 1}) A | BCounter({2: 2, 1: 1, 3: 1}) A  BCounter({2: 2}) A   BCounter({2: 4, 1: 1, 3: 1}) A - BCounter({1: 1}) B - ACounter({3: 1})
 a = [0, 1, 2, 3, 4, 5] LASTTHREE = slice(-3, None) LASTTHREEslice(-3, None, None) a[LASTTHREE][3, 4, 5]

22 操作多种汇集

5 切割列表

从自家起来读书python的时候,作者就从头投机计算叁个python小技能的聚众。后来当作者何以时候在Stack Overflow大概在某个开源软件里见到生龙活虎段很帅代码的时候,笔者就很离奇:原本还是可以那样做!那个时候作者会努力的亲善尝尝一下这段代码,直到自身懂了它的完好思路今后,俺就把这段代码加到笔者的集结里。那篇博客其实正是其风度翩翩集结收拾后豆蔻梢头局部的当众展布。若是你已然是个python大腕,那么基本上你应当清楚那中间的超过1/4用法了,但自个儿想你应该也能觉察一些您不清楚的新技能。而生龙活虎旦你后边是多少个c,c ,java的技术员,同临时间在求学python,可能索性就是一个正要学习编制程序的新手,那么你应有会看见多数特别有用能让您认为到古怪的实用本领,宛如本身那会儿同等。 每叁个技术和言语用法都会在三个个实例中显示给大家,也无需有此外的证实。小编早就努力把各个例子弄的老妪能解,可是因为读者对python的熟识程度不相同,依然恐怕难免有部分晦涩之处。所以要是那几个事例本人不能令你读懂,最少这几个事例的标题在您前边去Google搜索的时候会帮到你。整个会集大概是比照难易程度排序,轻便视而不见的在前面,超少见的在最终。1 拆箱

24 两端都可操作的队列

 a = [[1, 2], [3, 4], [5, 6]] list(itertools.chain.from_iterable(a))[1, 2, 3, 4, 5, 6]  sum(a, [])[1, 2, 3, 4, 5, 6]  [x for l in a for x in l][1, 2, 3, 4, 5, 6]  a = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] [x for l1 in a for l2 in l1 for x in l2][1, 2, 3, 4, 5, 6, 7, 8]  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]

23 总计在可迭代器中最常现身的要素

 class Point(collections.namedtuple('PointBase', ['x', 'y'])):... __slots__ = ()... def __add__(self, other):... return Point(x=self.x   other.x, y=self.y   other.y)... p = Point(x=1.0, y=2.0) q = Point(x=2.0, y=3.0) p   qPoint(x=3.0, y=5.0)
 A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7]) ACounter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1}) A.most_common(1)[(3, 4)] A.most_common(3)[(3, 4), (1, 2), (2, 2)]

初藳链接: sahandsaba 翻译: 伯乐在线 - Kevin Sun译文链接:

 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a[::2][0, 2, 4, 6, 8, 10] a[::3][0, 3, 6, 9] a[2:8:2][2, 4, 6] 

9 列表切割赋值

 import itertools with open('contactlenses.csv', 'r') as infile:... data = [line.strip().split(',') for line in infile]... data = data[1:] def print_data(rows):... print 'n'.join('t'.join('{: 16}'.format(s) for s in row) for row in rows)...  print_data(data)young myope no reduced noneyoung myope no normal softyoung myope yes reduced noneyoung myope yes normal hardyoung hypermetrope no reduced noneyoung hypermetrope no normal softyoung hypermetrope yes reduced noneyoung hypermetrope yes normal hardpre-presbyopic myope no reduced nonepre-presbyopic myope no normal softpre-presbyopic myope yes reduced nonepre-presbyopic myope yes normal hardpre-presbyopic hypermetrope no reduced nonepre-presbyopic hypermetrope no normal softpre-presbyopic hypermetrope yes reduced nonepre-presbyopic hypermetrope yes normal nonepresbyopic myope no reduced nonepresbyopic myope no normal nonepresbyopic myope yes reduced nonepresbyopic myope yes normal hardpresbyopic hypermetrope no reduced nonepresbyopic hypermetrope no normal softpresbyopic hypermetrope yes reduced nonepresbyopic hypermetrope yes normal none  data.sort(key=lambda r: r[-1]) for value, group in itertools.groupby(data, lambda r: r[-1]):... print '-----------'... print 'Group: '   value... print_data(group)...-----------Group: hardyoung myope yes normal hardyoung hypermetrope yes normal hardpre-presbyopic myope yes normal hardpresbyopic myope yes normal hard-----------Group: noneyoung myope no reduced noneyoung myope yes reduced noneyoung hypermetrope no reduced noneyoung hypermetrope yes reduced nonepre-presbyopic myope no reduced nonepre-presbyopic myope yes reduced nonepre-presbyopic hypermetrope no reduced nonepre-presbyopic hypermetrope yes reduced nonepre-presbyopic hypermetrope yes normal nonepresbyopic myope no reduced nonepresbyopic myope no normal nonepresbyopic myope yes reduced nonepresbyopic hypermetrope no reduced nonepresbyopic hypermetrope yes reduced nonepresbyopic hypermetrope yes normal none-----------Group: softyoung myope no normal softyoung hypermetrope no normal softpre-presbyopic myope no normal softpre-presbyopic hypermetrope no normal softpresbyopic hypermetrope no normal 
 for p in itertools.product([1, 2, 3], [4, 5]):(1, 4)(1, 5)(2, 4)(2, 5)(3, 4)(3, 5) for p in itertools.product([0, 1], repeat=4):... print ''.join(str(x) for x in p)...0000000100100011010001010110011110001001101010111100110111101111

21 操作集合

 A = {1, 2, 3, 3} Aset([1, 2, 3]) B = {3, 4, 5, 6, 7} Bset([3, 4, 5, 6, 7]) A | Bset([1, 2, 3, 4, 5, 6, 7]) A  Bset([3]) A - Bset([1, 2]) B - Aset([4, 5, 6, 7]) A ^ Bset([1, 2, 4, 5, 6, 7]) (A ^ B) == ((A - B) | (B - A))True
 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a[-1]10 a[-3]8
 a = [1, 2, 3, 4] for p in itertools.chain(itertools.combinations(a, 2), itertools.combinations(a, 3)):... print p...(1, 2)(1, 3)(1, 4)(2, 3)(2, 4)(3, 4)(1, 2, 3)(1, 2, 4)(1, 3, 4)(2, 3, 4) for subset in itertools.chain.from_iterable(itertools.combinations(a, n) for n in range(len(a)   1))... print subset...()(1,)(2,)(3,)(4,)(1, 2)(1, 3)(1, 4)(2, 3)(2, 4)(3, 4)(1, 2, 3)(1, 2, 4)(1, 3, 4)(2, 3, 4)(1, 2, 3, 4)
 m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} m.items()[('a', 1), ('c', 3), ('b', 2), ('d', 4)] zip(m.values(), m.keys())[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')] mi = dict(zip(m.values(), m.keys())) mi{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

32 列表组合和列表成分替代组合

 for p in itertools.permutations([1, 2, 3, 4]):... print ''.join(str(x) for x in p)...123412431324134214231432213421432314234124132431312431423214324134123421412341324213423143124321

15 列表打开

 a, *b, c = [1, 2, 3, 4, 5] a1 b[2, 3, 4] c5
 for c in itertools.combinations([1, 2, 3, 4, 5], 3):... print ''.join(str(x) for x in c)...123124125134135145234235245345 for c in itertools.combinations_with_replacement([1, 2, 3], 2):... print ''.join(str(x) for x in c)...111213222333

33 列表元素排列组合

6 负数索引切割列表

25 有最大尺寸的双端队列

 m = dict((str(x), x) for x in range(10)) print ', '.join(m.keys())1, 0, 3, 2, 5, 4, 7, 6, 9, 8 m = collections.OrderedDict((str(x), x) for x in range(10)) print ', '.join(m.keys())0, 1, 2, 3, 4, 5, 6, 7, 8, 9 m = collections.OrderedDict((str(x), x) for x in range(10, 0, -1)) print ', '.join(m.keys())10, 9, 8, 7, 6, 5, 4, 3, 2, 1

7 钦点步长切割列表

18 用字典推导反转字典

 a = [1, 2, 3, 4, 5] a[2:3] = [0, 0] a[1, 2, 0, 0, 4, 5] a[1:1] = [8, 9] a[1, 8, 9, 2, 0, 0, 4, 5] a[1:-1] = [] a[1, 5]

35 依据文件钦定列类聚

31 四个列表的笛卡尔积

4 负数索引

 import json tree = lambda: collections.defaultdict(tree) root = tree() root['menu']['id'] = 'file' root['menu']['value'] = 'File' root['menu']['menuitems']['new']['value'] = 'New' root['menu']['menuitems']['new']['onclick'] = 'new();' root['menu']['menuitems']['open']['value'] = 'Open' root['menu']['menuitems']['open']['onclick'] = 'open();' root['menu']['menuitems']['close']['value'] = 'Close' root['menu']['menuitems']['close']['onclick'] = 'close();' print json.dumps(root, sort_keys=True, indent=4, separators=(',', ': ')){ "menu": { "id": "file", "menuitems": { "close": { "onclick": "close();", "value": "Close" }, "new": { "onclick": "new();", "value": "New" }, "open": { "onclick": "open();", "value": "Open" } }, "value": "File" }}

本文由www.5197.com发布于web前端,转载请注明出处:35 个有关 Python 的小技巧澳门新蒲京娱乐场官网