Skip to content Skip to sidebar Skip to footer

List Conversion

I am looking for a way to convert a list like this [[1.1, 1.2, 1.3, 1.4, 1.5], [2.1, 2.2, 2.3, 2.4, 2.5], [3.1, 3.2, 3.3, 3.4, 3.5], [4.1, 4.2, 4.3, 4.4, 4.5], [5.1, 5.2, 5.3,

Solution 1:

The following line should do it:

[list(zip(row, row[1:])) forrowin m]

where m is your initial 2-dimensional list

UPDATE for second question in comment

You have to transpose (= exchange columns with rows) your 2-dimensional list. The python way to achieve a transposition of m is zip(*m):

[list(zip(column, column[1:])) for column in zip(*m)]

Solution 2:

In response to further comment from questioner, two answers:

# Original grid
grid = [[1.1, 1.2, 1.3, 1.4, 1.5],
 [2.1, 2.2, 2.3, 2.4, 2.5],
 [3.1, 3.2, 3.3, 3.4, 3.5],
 [4.1, 4.2, 4.3, 4.4, 4.5],
 [5.1, 5.2, 5.3, 5.4, 5.5]]


# Windowfunctiontoreturn sequence of pairs.
def window(row):
    return [(row[i], row[i +1]) for i inrange(len(row) -1)]

ORIGINAL QUESTION:

# Print sequences of pairs for gridprint [window(y) for y in grid]

UPDATED QUESTION:

# Take the nth item from every row to get that column.defcolumn(grid, columnNumber):
    return [row[columnNumber] for row in grid]


# Transpose grid to turn it into columns.deftranspose(grid):
    # Assume all rows are the same length.
    numColumns = len(grid[0])
    return [column(grid, columnI) for columnI inrange(numColumns)]


# Return windowed pairs for transposed matrix.print [window(y) for y in transpose(grid)]

Solution 3:

Another version would be to use lambda and map

map(lambda x: zip(x,x[1:]),m)

where m is your matrix of choice.

Solution 4:

List comprehensions provide a concise way to create lists: http://docs.python.org/tutorial/datastructures.html#list-comprehensions

[[(a[i],a[i+1]) for i in xrange(len(a)-1)] for a in A] 

Post a Comment for "List Conversion"