2024-04-28 12:38:51 发布
网友
我现在有
seq1 = "--MFA" seq2= "--MFU" for i in range(0, len(seq1)): if seq1[i] or seq2[i] == '-': print "hi" else: print "bye"
为什么它要打印“hi”5次(即使seq1[i]和seq1[i]是M、F、A/U)。一开始我以为这是一个正则表达式问题,但即使是省略连字符也会产生相同的结果。在
if seq1[i] or seq2[i] == '-':
此条件意味着如果seq1[i]为真或seq2[i] = '-'请执行以下操作。在这种情况下,seq1[i]是正确的5次。然后,它会打印“嗨”5次。在
seq1[i]
seq2[i] = '-'
指:
if (seq1[i]) or (seq2[i] == '-'):
如果seq[i]的值是True(即,如果bool(seq1[i]) == True),那么条件语句将立即为真,因为or。使用or运算符,如果一侧是True,则条件运行。在
seq[i]
True
bool(seq1[i]) == True
or
请注意,bool(seq1[i])将始终为True,因为任何长度的字符串都被视为True。在
bool(seq1[i])
因此,'hi'被打印出来。在
'hi'
你可以在这里使用一些替代品
if '-' in (seq1[i], seq2[i]):
简洁,但读起来很有趣。在
感觉更自然
一种更简洁的方法是使用zip
zip
for i, j in zip(seq1, seq2): if i == '-' or j == '-': print "hi" else: print "bye"
如果您要在多个序列中循环,扩展比较的一个好方法是使用any
any
for item in zip(seq1, seq2, seq3, seq4, ...): if any(i == '-' for i in item): print "hi" else: print "bye"
此条件意味着如果
seq1[i]
为真或seq2[i] = '-'
请执行以下操作。在这种情况下,seq1[i]是正确的5次。然后,它会打印“嗨”5次。在if seq1[i] or seq2[i] == '-':
指:
if (seq1[i]) or (seq2[i] == '-'):
如果
seq[i]
的值是True
(即,如果bool(seq1[i]) == True
),那么条件语句将立即为真,因为or
。使用or
运算符,如果一侧是True
,则条件运行。在请注意,
bool(seq1[i])
将始终为True,因为任何长度的字符串都被视为True。在因此,
'hi'
被打印出来。在你可以在这里使用一些替代品
简洁,但读起来很有趣。在
^{pr2}$感觉更自然
一种更简洁的方法是使用
zip
如果您要在多个序列中循环,扩展比较的一个好方法是使用
any
相关问题 更多 >
编程相关推荐