Combine current element with next element in a list

Viewed 82

I'm quite embarassed because of this question but i just want to combine the current element in a list with the next element. The list is given as:

['scalar2_q1p2_114(-2,-2) =', '0', 'scalar2_q1p2_114(-2,-1) =', '0',
 'scalar2_q1p2_114(-2,0) =', '0', 'scalar2_q1p2_114(-2,1) =', '0',
 'scalar2_q1p2_114(-2,2) =', '0', 'scalar2_q1p2_114(-1,-2) =', '0',
 'scalar2_q1p2_114(-1,-1) =', '0', 'scalar2_q1p2_114(-1,0) =', '0',
 'scalar2_q1p2_114(-1,1) =', '0', 'scalar2_q1p2_114(-1,2) =', '0',
 'scalar2_q1p2_114(0,-2) =', '0', 'scalar2_q1p2_114(0,-1) =', '0',
 'scalar2_q1p2_114(0,0) =', '0', 'scalar2_q1p2_114(0,1) =', '0',
 'scalar2_q1p2_114(0,2) =', '0', 'scalar2_q1p2_114(1,-2) =', '0',
 'scalar2_q1p2_114(1,-1) =', '0', 'scalar2_q1p2_114(1,0) =', '0',
 'scalar2_q1p2_114(2,-2) =', '0', 'scalar2_q1p2_114(2,-1) =', '0',
 'scalar2_q1p2_114(2,0) =', '0', 'scalar2_q1p2_114(1,2) =',
 'scalar2_q1p2_114(1,1)*((-d+3)/(SPD[p2,p2]))']

What I want is a list in a form of:

['scalar2_q1p2_114(-2,-2) = 0', ...].

Can anybody help me out with this small problem

3 Answers

You have to iterate through the list 2 elements at a time.

Try this.

[my_list[i]+my_list[i+1] for i in range(0,len(my_list)-1,2)] #my_list is the original list you've posted in the question

['scalar2_q1p2_114(-2,-2) =0',
 'scalar2_q1p2_114(-2,-1) =0',
 'scalar2_q1p2_114(-2,0) =0',
 'scalar2_q1p2_114(-2,1) =0',
 'scalar2_q1p2_114(-2,2) =0',
 'scalar2_q1p2_114(-1,-2) =0',
 'scalar2_q1p2_114(-1,-1) =0',
 'scalar2_q1p2_114(-1,0) =0',
 'scalar2_q1p2_114(-1,1) =0',
 'scalar2_q1p2_114(-1,2) =0',
 'scalar2_q1p2_114(0,-2) =0',
 'scalar2_q1p2_114(0,-1) =0',
 'scalar2_q1p2_114(0,0) =0',
 'scalar2_q1p2_114(0,1) =0',
 'scalar2_q1p2_114(0,2) =0',
 'scalar2_q1p2_114(1,-2) =0',
 'scalar2_q1p2_114(1,-1) =0',
 'scalar2_q1p2_114(1,0) =0',
 'scalar2_q1p2_114(2,-2) =0',
 'scalar2_q1p2_114(2,-1) =0',
 'scalar2_q1p2_114(2,0) =0',
 'scalar2_q1p2_114(1,2) =scalar2_q1p2_114(1,1)*((-d+3)/(SPD[p2,p2]))']

you can use list comprehension with zip built-in function:

l = ['scalar2_q1p2_114(-2,-2) =', '0', 'scalar2_q1p2_114(-2,-1) =', '0',
 'scalar2_q1p2_114(-2,0) =', '0', 'scalar2_q1p2_114(-2,1) =', '0',
 'scalar2_q1p2_114(-2,2) =', '0', 'scalar2_q1p2_114(-1,-2) =', '0',
 'scalar2_q1p2_114(-1,-1) =', '0', 'scalar2_q1p2_114(-1,0) =', '0',
 'scalar2_q1p2_114(-1,1) =', '0', 'scalar2_q1p2_114(-1,2) =', '0',
 'scalar2_q1p2_114(0,-2) =', '0', 'scalar2_q1p2_114(0,-1) =', '0',
 'scalar2_q1p2_114(0,0) =', '0', 'scalar2_q1p2_114(0,1) =', '0',
 'scalar2_q1p2_114(0,2) =', '0', 'scalar2_q1p2_114(1,-2) =', '0',
 'scalar2_q1p2_114(1,-1) =', '0', 'scalar2_q1p2_114(1,0) =', '0',
 'scalar2_q1p2_114(2,-2) =', '0', 'scalar2_q1p2_114(2,-1) =', '0',
 'scalar2_q1p2_114(2,0) =', '0', 'scalar2_q1p2_114(1,2) =',
 'scalar2_q1p2_114(1,1)*((-d+3)/(SPD[p2,p2]))']

[f + ' ' + s for f, s in zip(l[::2], l[1::2])]

output:

['scalar2_q1p2_114(-2,-2) = 0',
 'scalar2_q1p2_114(-2,-1) = 0',
 'scalar2_q1p2_114(-2,0) = 0',
 'scalar2_q1p2_114(-2,1) = 0',
 'scalar2_q1p2_114(-2,2) = 0',
 'scalar2_q1p2_114(-1,-2) = 0',
 'scalar2_q1p2_114(-1,-1) = 0',
 'scalar2_q1p2_114(-1,0) = 0',
 'scalar2_q1p2_114(-1,1) = 0',
 'scalar2_q1p2_114(-1,2) = 0',
 'scalar2_q1p2_114(0,-2) = 0',
 'scalar2_q1p2_114(0,-1) = 0',
 'scalar2_q1p2_114(0,0) = 0',
 'scalar2_q1p2_114(0,1) = 0',
 'scalar2_q1p2_114(0,2) = 0',
 'scalar2_q1p2_114(1,-2) = 0',
 'scalar2_q1p2_114(1,-1) = 0',
 'scalar2_q1p2_114(1,0) = 0',
 'scalar2_q1p2_114(2,-2) = 0',
 'scalar2_q1p2_114(2,-1) = 0',
 'scalar2_q1p2_114(2,0) = 0',
 'scalar2_q1p2_114(1,2) = scalar2_q1p2_114(1,1)*((-d+3)/(SPD[p2,p2]))']

You can use str.join and zip over every other element using slicing:

list(map('  '.join, zip(l[::2], l[1::2])))

['scalar2_q1p2_114(-2,-2) = 0',
 'scalar2_q1p2_114(-2,-1) = 0',
 'scalar2_q1p2_114(-2,0) = 0',
 'scalar2_q1p2_114(-2,1) = 0',
 'scalar2_q1p2_114(-2,2) = 0',
 'scalar2_q1p2_114(-1,-2) = 0',
 'scalar2_q1p2_114(-1,-1) = 0',
 'scalar2_q1p2_114(-1,0) = 0',
 'scalar2_q1p2_114(-1,1) = 0',
 'scalar2_q1p2_114(-1,2) = 0',
 'scalar2_q1p2_114(0,-2) = 0',
 'scalar2_q1p2_114(0,-1) = 0',
 'scalar2_q1p2_114(0,0) = 0',
 'scalar2_q1p2_114(0,1) = 0',
 'scalar2_q1p2_114(0,2) = 0',
 'scalar2_q1p2_114(1,-2) = 0',
 'scalar2_q1p2_114(1,-1) = 0',
 'scalar2_q1p2_114(1,0) = 0',
 'scalar2_q1p2_114(2,-2) = 0',
 'scalar2_q1p2_114(2,-1) = 0',
 'scalar2_q1p2_114(2,0) = 0',
 'scalar2_q1p2_114(1,2) = scalar2_q1p2_114(1,1)*((-d+3)/(SPD[p2,p2]))']
Related