Home of RF and Wireless Vendors and Resources

One Stop For Your RF and Wireless Need

Python | sequences, zip function, list sorting, sequence sorting

This python programming tutorial covers working with sequences, zip function, list sorting, sequence sorting etc.

Formatted Output

When working with data, you often want to produce structured output (tables, etc.). For example table having Name,Shares and Price as columns.
Formatting operator (%)
>>> "The value is %d" % 3
'The value is 3'
Requires single item or a tuple on right.Commonly used with print and Format codes are same as with C printf().
%d Decimal integer
%u Unsigned integer
%x Hexadecimal integer
%f Float
%s String
%c Character

Formatting with fields in a dictionary
>>> stock = {
... 'name' : 'GOOG',
... 'price' : 490.10,
... 'shares' : 100
}
>>> print "%(name)8s %(shares)10d %(price)10.2f" % stock
GOOG 100 490.10
>>>

Working with sequences

Python has three sequence datatypes as mentioned below:
a = "Hello" # String
b = [1,4,5] # List
c = ('GOOG',100,490.10) # Tuple

Sequences are ordered : s[n]
a[0] 'H'

Sequences have a length : len(s)
len(a) 5

Sequences can be replicated : s * n
>>> a = 'Hello'
>>> a * 3
'HelloHelloHello'

Similar sequences can be concatenated : s + t
>>> a = (1,2,3)
>>> b = (4,5)
>>> a + b
(1,2,3,4,5)

Slicing operator : s[start:end]
a = [0,1,2,3,4,5,6,7,8]
a[2:5] [2,3,4]

Indices must be integers
Slices do not include end value
If indices are omitted, they default to the beginning or end of the list.

Extended slicing: s[start:end:step]
a = [0,1,2,3,4,5,6,7,8]
a[:5] [0,1,2,3,4]

Sequence Reductions

sum(s)
>>> s = [1, 2, 3, 4]
>>> sum(s)
10
min(s), max(s)
>>> min(s)
1
>>> max(s)
4

Iterating over a Sequence

The for-loop iterates over sequence data
>>> s = [1, 4, 9, 16]
>>> for i in s:
... print i
...
1
4
9
16
>>>
On each iteration of the loop, you get new item of data to work with.

Iteration Variables

Each time through the loop, a new value is placed into an iteration variable
for x in s:
statements:
Overwrites the previous value (if any)
After the loop finishes, the variable has the value from the last iteration of the loop
x = 42
for x in s: # Overwrites any previous x
statements
print x # Prints value from last iteration

break and continue

Breaking out of a loop (exiting)
for name in namelist:
if name == username: break

Jumping to the start of the next iteration
for line in lines:
if not line: continue
# More statements
...

These statements only apply to the innermost loop that is active

Looping over integers

If you simply need to count, use xrange()
xrange([start,] end [,step])
for i in xrange(100):
# i = 0,1,...,99
range([start,] end [,step])
range() creates a list of integers

enumerate() Function

Provides a loop counter value
names = ["Elwood","Jake","Curtis"]
for i,name in enumerate(names):
# Loops with i = 0, name = 'Elwood'
# i = 1, name = 'Jake'
# i = 2, name = 'Curtis'
...

Example: Keeping a line number
for linenumber,line in enumerate(open(filename)):
...

enumerate() is a nice shortcut
for i,x in enumerate(s):
statements
Compare to:
i = 0
for x in s:
statements
i += 1
Less typing and enumerate() runs slightly faster

for and tuples

Looping with multiple iteration variables
points = [
(1,4),(10,40),(23,14),(5,6),(7,8)
]

for x,y in points:
# Loops with x = 1, y = 4
# x = 10, y = 40
# x = 23, y = 14
# ...
Here, each tuple is unpacked into a set of iteration variables.

zip() Function

Combines multiple sequences into tuples
a = [1,4,9]
b = ['Jake','Elwood','Curtis']
x = zip(a,b) # x = [(1,'Jake'),(4,'Elwood'), ...]

zip() always stops with shortest sequence
a = [1,2,3,4,5,6]
b = ['Jake','Elwood']
x = zip(a,b) # x = [(1,'Jake'),(2,'Elwood')]

List Sorting

Lists can be sorted "in-place" (sort method)
s = [10,1,7,3]
s.sort() # s = [1,3,7,10]


Sorting in reverse order
s = [10,1,7,3]
s.sort(reverse=True) # s = [10,7,3,1]
Sorting works with any ordered type
s = ["foo","bar","spam"]
s.sort() # s = ["bar","foo","spam"]

Sometimes you need to perform extra processing while sorting
Example: Case-insensitive string sort
>>> s = ["hello","WORLD","test"]
>>> s.sort()
>>> s
['WORLD','hello','test']

Sorting with a key function:
>>> def tolower(x):
... return x.lower()
...
>>> s = ["hello","WORLD","test"]
>>> s.sort(key=tolower)
>>> s
['hello','test','WORLD']

Sequence Sorting

sorted() function
Turns any sequence into a sorted list
>>> sorted("Python")
['P', 'h', 'n', 'o', 't', 'y']
>>> sorted((5,1,9,2))
[1, 2, 5, 9]


Similar posts on Python tutorial

Useful DSP codes in Python