加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 需要对给定的字符串进行排序(首先以x开头的字符串)

发布时间:2020-12-20 12:02:29 所属栏目:Python 来源:网络整理
导读:当给出[‘mix’,’xyz’,’apple’,’xanadu’,’aardvark’]列表时,代码不返回最后一个单词. def front_x(words): x_list = [] no_x_list = [] [x_list.append(i) for i in words if i[0] == "x"] [no_x_list.append(words[i2]) for i2 in range(len(words)
当给出[‘mix’,’xyz’,’apple’,’xanadu’,’aardvark’]列表时,代码不返回最后一个单词.

def front_x(words):
    x_list = []
    no_x_list = []
    [x_list.append(i) for i in words if i[0] == "x"]
    [no_x_list.append(words[i2]) for i2 in range(len(words)-1) if words[i2] not in x_list]
    x_list.sort()
    no_x_list.sort()
    return x_list + no_x_list
print front_x(['mix','xyz','apple','xanadu','aardvark'])

一定是:

['xanadu','aardvark','mix']

列表[‘bbb’,’ccc’,’axx’,’xzz’,’xaa’]和[‘ccc’,’bbb’,’aaa’,’xcc’,’xaa’]一切都正确[‘ xaa’,’ccc’]和[‘xaa’,’ccc’]

解决方法

迭代范围(len(单词)-1)看起来不正确.更重要的是,使列表理解列表附加是非常单一的; list comps用于构建列表,而不是使列表附加,这在这里具有讽刺意味.

您可以通过基于两元组进行排序来执行排序一次,该元组的第一项检查单词是否以’x’开头并将其放在前面.元组中的第二项在列表中应用了lexicograhical排序,打破了联系:

def front_x(words):
    return sorted(words,key=lambda y: (not y.startswith('x'),y))

print front_x(['mix','aardvark'])
# ['xanadu','mix']

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读