【发布时间】:2015-02-05 00:47:29
【问题描述】:
所以我得到的任务是创建一个函数,它以 x 作为参数,根据(我假设的)输入字母的序数值分配数字。请记住,只能输入不重复的小写字母。
由于“a
我应该如何构建一个符合这个标准的函数?我想我会包含一个从 ord[a] 到 ord [z] 的范围,然后包含一个 elif 循环语句。有什么指点吗?
【问题讨论】:
标签: python string python-3.x
所以我得到的任务是创建一个函数,它以 x 作为参数,根据(我假设的)输入字母的序数值分配数字。请记住,只能输入不重复的小写字母。
由于“a
我应该如何构建一个符合这个标准的函数?我想我会包含一个从 ord[a] 到 ord [z] 的范围,然后包含一个 elif 循环语句。有什么指点吗?
【问题讨论】:
标签: python string python-3.x
您可以构建一个字典,将每个字符映射到其在原始字符串中不同字符的排序列表中的位置:
def perm(s):
indexes = {x:i+1 for i,x in enumerate(sorted(set(s)))}
return ''.join(str(indexes[x]) for x in s)
print(perm('abc'))
print(perm('zad'))
【讨论】:
enumerate 使用start 关键字参数来避免i+1。 enumerate(sorted(s), start=1)
str1 = "bca"
print (sorted([str1.index(x)+1 for x in sorted(str1)]))
首先对它们进行排序并打印它们的排序索引。小心,+1 索引,因为索引从 0 开始。
【讨论】:
str.index 很慢。一个更好的方法是像@JuanLopes 所做的那样使用enumerate