Python tips, tricks and hacks

My new position involves quite a bit of python coding. Before this I've only known java, so I keep trying to do things the java way not the python way. Python tends to give me this feeling that there are short simple ways of doing things, but that I can't figure them out.

For example, the following code takes two iterables and gives back a list containing tuples of indices on which the arrays agree.

def array_value_index_mapping(correct, comparison,  compare_function= lambda x, y:x==y):
    index_mapping = []
    _list_comparor_recursive([],  correct, [], comparison, index_mapping, compare_function)
    return index_mapping
def _list_comparor_recursive(correct_index,  correct_axes, comparison_index,\
        comparison_axes, reduced_comparison_axes, compare_function):
    if correct_axes.shape==() and comparison_axes.shape==():
        if compare_function(correct_axes, comparison_axes):
            if len(correct_index) == 1:
                reduced_comparison_axes.append((correct_index[0], comparison_index[0]))
            else:
                reduced_comparison_axes.append((tuple(correct_index), tuple(comparison_index)))
    elif not correct_axes.shape == ():
        for i, row in enumerate(correct_axes):
            correct_index.append(i)
            _list_comparor_recursive(correct_index, row, comparison_index, comparison_axes,  reduced_comparison_axes, compare_function)
            correct_index.pop()
    elif not comparison_axes.shape == ():
        for i, row in enumerate(comparison_axes):
            comparison_index.append(i)
            _list_comparor_recursive(correct_index,  correct_axes, comparison_index, row, reduced_comparison_axes, compare_function)
            comparison_index.pop()

I use this code to do calculations like

result = [first_array[index_mapping[i][0]]-second_array[indexmapping[i][1] for i in range(len(index_mapping))]

It all looks too ugly to me.

Anyway, the point of this post is that such things as the above horror must result when ever a python newb tries his hand at things. I've tried looking for informative and useful lists of tricks that might help reduce this issue (and help me code in a way that doesn't cause brain damage). This result is this list...