I'm trying to change several if
and else
statements into generator expressions and for some reason it gives me an error.
So my if
and else
statement is this..
sequence = 'CTGAGTAGC'
reference = 'ATGACTGCC'
for seq, ref in zip(sequence,reference):
if seq == ref:
print seq,'-',ref
else:
print seq,' ',ref
I've tried above if and else statement into this generator expression..
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
print tmp
and it gives me an error like this:
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
^
SyntaxError: invalid syntax
You need to disambiguate the tuples in the expression:
tmp = ((seq, '-', ref) if seq == ref else (seq, ' ', ref)
for seq, ref in zip(sequence, reference))
or even
tmp = ((seq, '-' if seq == ref else ' ', ref)
for seq, ref in zip(sequence, reference))
Demo:
>>> sequence = 'CTGAGTAGC'
>>> reference = 'ATGACTGCC'
>>> tmp = ((seq, '-' if seq == ref else ' ', ref)
... for seq, ref in zip(sequence, reference))
>>> for tup in tmp:
... print tup
...
('C', ' ', 'A')
('T', '-', 'T')
('G', '-', 'G')
('A', '-', 'A')
('G', ' ', 'C')
('T', '-', 'T')
('A', ' ', 'G')
('G', ' ', 'C')
('C', '-', 'C')