我是靠谱客的博主 专注水壶,最近开发中收集的这篇文章主要介绍python字符串按字母大小排序_python – 在给定字符串中按字母顺序查找字母的最长子字符串...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在执行给定任务的代码时,我会继续获取最长的字符串以及迭代中的下一个字母.例如,如果我使用

s = 'azcbobobegghakl'

当答案应该是“beggh”时,我会将“beggha”作为最长的字符串.我试过的所有随机字母串都会出现同样的错误.

我已经发现在“result = letters”语句之后添加了额外的字母,但我不确定如何修复它.这是我的代码:

s = 'azcbobobegghakl'

result = []

final = []

for letters in s:

result += letters

if result == sorted(result) and len(result) >= len(final):

final=result

elif result != sorted(result):

result = [result[len(result)-1]]

print "".join(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

有关此行为的说明,请参阅this问题.当字母是字符串中的最后一个字符时,这就是for循环(编辑:原始代码)中发生的情况:

>在开头,结局和结果都指向[‘b’,’e’,’g’,’g’,’h’].

>在结果=’a’结束后,结果都指向[‘b’,’e’,’g’,’g’,’h’,’a’].

>现在输入elif块,结果将指向一个新列表[‘a’],而final仍然指向[‘b’,’e’,’g’,’g’,’h’,’a’ ].

>此后永远不会再次更新

因此,您的原始代码(在编辑它之前)可以通过更改来修复

结果=字母

result =结果[字母]:

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)

标签:python,string,python-2-7,substring

最后

以上就是专注水壶为你收集整理的python字符串按字母大小排序_python – 在给定字符串中按字母顺序查找字母的最长子字符串...的全部内容,希望文章能够帮你解决python字符串按字母大小排序_python – 在给定字符串中按字母顺序查找字母的最长子字符串...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部