>>> old = [1, 2, 3]
>>> new = old[:]
>>> old is new
False
But full-slicing a tuple does NOT build a new tuple:
>>> old = (1, 2, 3)
>>> new = old[:]
>>> old is new
True
>>> old = [1, 2, 3]
>>> new = old[:]
>>> old is new
False
>>> old = (1, 2, 3)
>>> new = old[:]
>>> old is new
True
>>> a = range(11, 15)
>>> b = zip(range(21, 25), range(31, 35))
>>> for x, (y, z) in zip(a, b):
... print x, y, z
...
11 21 31
12 22 32
13 23 33
14 24 34
def foo(a, (b, c)):
print a, b, c
>>> foo(10, (20, 30))
10 20 30