python - Zipping two list of lists -
need got lost in zipping 2 lists of lists (matrix).
the matrices same format, them zipped in tuple pairs each element in same position.
for example,
m1 = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g']] m2 = [['s1', 's2', 's3'], ['s4', 's5'], ['s1', 's3']]
what expect is, same format:
z = [[('a', 's1'), ('b', 's2'), ('c', 's3')], [('d', 's4'), ('e', 's5')], [('f', 's1'), ('g', 's3')]]
i can write function looking elegant way of doing in python.
zip()
, zip()
again:
[zip(*paired) paired in zip(m1, m2)]
the zip()
function pairs each element of input sequences; m1[0]
m2[0]
, m1[1]
m2[1]
, etc., , each of pairs pair elements again (m1[0][0]
m2[0][0]
, m1[0][1]
m2[0][1]
, etc.).
if python 3, you'll have wrap 1 of in list()
call:
[list(zip(*paired)) paired in zip(m1, m2)]
demo:
>>> m1 = [['a', 'b', 'c'], ... ['d', 'e'], ... ['f', 'g']] >>> m2 = [['s1', 's2', 's3'], ... ['s4', 's5'], ... ['s1', 's3']] >>> [zip(*paired) paired in zip(m1, m2)] [[('a', 's1'), ('b', 's2'), ('c', 's3')], [('d', 's4'), ('e', 's5')], [('f', 's1'), ('g', 's3')]]
Comments
Post a Comment