10 Python Tricks To Make Your Code Shorter

Robert Washbourne - 5 years ago - programming, python

These are mainly unique to python, so if you program in another language, these may be surprising. They certainly were for me when I got started with python.

1. Negative indexing

>>> a = [1,2,3]
>>> a[-2] 
2
>>> a[-1] 
3

2. List slices

>>> a = [1,2,3,4]
>>> a[2:4] 
[3, 4]

3. Grouped naming

>>> a,b,c = [1,2,3]
>>> a 
1 
>>> b 
2
>>> c 
3

4. Set operations

>>> a = {1,2,3,6,2,3}
>>> b = {4,2,5,7,4,3}
>>> a 
set([1, 2, 3, 6])
>>> a | b 
set([1, 2, 3, 4, 5, 6, 7])
>>> a & b 
set([2, 3])
>>> a - b 
set([1, 6])
>>> a^b 
set([1, 4, 5, 6, 7])

5. nLargest and nSmallest

>>> import heapq 
>>> a = [3,2,5,6,7,34,8,3,42,4,5] 
>>> heapq.nsmallest(5,a) 
[2, 3, 3, 4, 5] 
>>> heapq.nlargest(3,a) 
[42, 34, 8]

6. Cartesian products

>>> import itertools 
>>> [print(p) for p in itertools.product([4,3,6,2],[3,6])]
(4, 3) 
(4, 6) 
(3, 3) 
(3, 6) 
(6, 3) 
(6, 6) 
(2, 3) 
(2, 6)

7. Inverting a dictionary

>>> a = {'a':1,'b':2,'c':3} 
>>> {x: y for y, x in a.items()} 
{1: 'a', 2: 'b', 3: 'c'}

8. Generators

>>> a = (x+1 for x in xrange(10)) 
>>> next(a) 1 
>>> next(a) 2 
>>> next(a) 3

9. Named tuples

>>> import collections 
>>> Point = collections.namedtuple('Point',['x','y']) 
>>> p = Point(x=1,y=3) 
>>> p 
Point(x=1, y=3) 
>>> p.x 
1 
>>> p.y 
3

10. Flatten lists

>>> a = [[1,2],[4,3],[5,2]] 
>>> sum(a,[]) 
[1, 2, 4, 3, 5, 2]