Python Cheat Sheet: Lists

Lists are linear sequences that provide constant time data lookup. They can be resized, searched, sorted (using a custom compare function) and are not restricted to a single data type (e.g. you can define lists with mixed data). Lists in Python are 0 indexed.

##### Defining a pre-initialized list with 10 numeric values (all zeros):
```A =  * 10
```
##### Defining a pre-initialized list with 10 numeric values (powers of 2):
```A = [ 2**i for i in xrange(0, 10) ]
```

Note1: xrange above returns values from 0 to 9 inclusive.

Note2: this syntax is known as list comprehension.

##### Iterating through all the elements (read only):
```A = [ 0, 'a', {'b':'c'} ]
for e in A:
print e
```
##### Iterating through all the elements (read/write):
```A = [ 0, 'a', {'b':'c'} ]
for i in xrange(len(A)):
print i, A[i]
```
##### Adding new elements at the end of the list:
```A = [ 0, 1, 2, 3 ]
A += [ 4 ]
```

Note: there is an append method that can also be used for this purpose.

##### Insert new elements:
```A = [ 0, 1, 2, 3 ]
A.insert(0, -1)	#position, value
```

Note: the insert above puts a new element at the front of the list.

##### Find elements in the list:
```A = [ 0, 1, 2, 3 ]
A.index(2)
```

Note: index does a linear search for the element with the value provided. A ValueError exception is thrown if the element cannot be found.

##### Remove elements from the list:
```A = [ 0, 1, 2, 3 ]
A.remove(2)		#by value
del A		#by index
```
##### Using a Python List as a Stack:
```A = [ ]
A.append(1)
A.append(2)			#always add elements at the end
stacktop = A.pop()	#returns 2, the last element added
```

Note: pop throws the exception IndexError if the list is empty.

##### Using a Python List as a Queue:
```A = [ ]
A.insert(0, 1)
A.insert(0, 2)	#always insert at the beginning of the list
elem = A.pop()	#returns 1, the first element added
```

Note: for an optimized implementation for both Stacks and Queues you may want to look at the collections.deque data structure.

That’s it for today, have fun!

### Related Posts

This site uses Akismet to reduce spam. Learn how your comment data is processed.