这里的问题是,result
和final
指向同一个列表。您可能会考虑+=
在发出时会创建一个新列表result += letters
,但不会:
>>> x = [1,2]
>>> y = x
>>> x += [3]
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
>>> x is y
True
但是,当您使用时x = x + [3]
:
>>> x = [1,2]
>>> y = x
>>> x = x + [3]
>>> x
[1, 2, 3]
>>> y
[1, 2]
>>> x is y
False
有关此行为的解释,看到这个问题。这是您的for
循环中发生的事情(原始代码的编辑:),这是字符串中letters
的最后一个a
字符:
因此,可以通过更改原始代码(在编辑之前)进行修复
result += letters
至
result = result + [letters]
:
s = 'azcbobobegghakl'
result = []
final = []
for letters in s:
result = result + [letters]
if result == sorted(result) and len(result) >= len(final):
final=result
elif result != sorted(result):
result = [result[len(result)-1]]
print(final)