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"