生成器表达式的格式不正确? python
Incorrect format of generator expression? python
我正在尝试将几个 if
和 else
语句更改为生成器表达式,但由于某种原因它给了我一个错误。
所以我的 if
和 else
声明是这样的..
sequence = 'CTGAGTAGC'
reference = 'ATGACTGCC'
for seq, ref in zip(sequence,reference):
if seq == ref:
print seq,'-',ref
else:
print seq,' ',ref
我已经尝试将上面的 if 和 else 语句放入此生成器表达式中..
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
print tmp
它给我这样的错误:
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
^
SyntaxError: invalid syntax
您需要消除表达式中元组的歧义:
tmp = ((seq, '-', ref) if seq == ref else (seq, ' ', ref)
for seq, ref in zip(sequence, reference))
甚至
tmp = ((seq, '-' if seq == ref else ' ', ref)
for seq, ref in zip(sequence, reference))
演示:
>>> 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')
print seq,'-',ref
在这种类型的语句中,print
正在为您将字符串放在一起。 seq, '-', ref
其他任何地方都是元组,如果你不想要元组....
tmp = ( "-".join(i) if i[0] == i[1] else " ".join(i) for i in zip(sequence,reference))
for i in tmp:
print i
"-".join(i) if i[0] == i[1] else " ".join(i)
是一个 python 三元表达式(其形式为 A if condition else B
)
我正在尝试将几个 if
和 else
语句更改为生成器表达式,但由于某种原因它给了我一个错误。
所以我的 if
和 else
声明是这样的..
sequence = 'CTGAGTAGC'
reference = 'ATGACTGCC'
for seq, ref in zip(sequence,reference):
if seq == ref:
print seq,'-',ref
else:
print seq,' ',ref
我已经尝试将上面的 if 和 else 语句放入此生成器表达式中..
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
print tmp
它给我这样的错误:
tmp = (seq,'-',ref if seq==ref else seq,' ',ref for seq,ref in zip(sequence,reference))
^
SyntaxError: invalid syntax
您需要消除表达式中元组的歧义:
tmp = ((seq, '-', ref) if seq == ref else (seq, ' ', ref)
for seq, ref in zip(sequence, reference))
甚至
tmp = ((seq, '-' if seq == ref else ' ', ref)
for seq, ref in zip(sequence, reference))
演示:
>>> 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')
print seq,'-',ref
在这种类型的语句中,print
正在为您将字符串放在一起。 seq, '-', ref
其他任何地方都是元组,如果你不想要元组....
tmp = ( "-".join(i) if i[0] == i[1] else " ".join(i) for i in zip(sequence,reference))
for i in tmp:
print i
"-".join(i) if i[0] == i[1] else " ".join(i)
是一个 python 三元表达式(其形式为 A if condition else B
)