Python 按字母顺序忽略元音的字符串排序列表
如果我有一个字符串列表,我将如何通过忽略元音按字母顺序排序。例如,['alpha','beta']将排序为['beta','alpha'],因为'bt'按字母顺序排在'lph'之前。我曾经尝试过使用lambda函数之类的东西,但我有点卡住了,希望您能提供帮助。您可以在排序函数的关键参数中使用lambda函数Python 按字母顺序忽略元音的字符串排序列表,python,string,list,sorting,Python,String,List,Sorting,如果我有一个字符串列表,我将如何通过忽略元音按字母顺序排序。例如,['alpha','beta']将排序为['beta','alpha'],因为'bt'按字母顺序排在'lph'之前。我曾经尝试过使用lambda函数之类的东西,但我有点卡住了,希望您能提供帮助。您可以在排序函数的关键参数中使用lambda函数 In [14]: l = ['alpha', 'beta'] In [15]: v = {'a', 'e', 'i', 'o', 'u'} In [16]: sorted(l, key=la
In [14]: l = ['alpha', 'beta']
In [15]: v = {'a', 'e', 'i', 'o', 'u'}
In [16]: sorted(l, key=lambda item: [char for char in item if char.lower() not in v])
Out[16]: ['beta', 'alpha']
可以在排序函数的关键参数中使用lambda函数
In [14]: l = ['alpha', 'beta']
In [15]: v = {'a', 'e', 'i', 'o', 'u'}
In [16]: sorted(l, key=lambda item: [char for char in item if char.lower() not in v])
Out[16]: ['beta', 'alpha']
在Python 2.x中,您可以在lambda中使用以下命令从字符串中删除元音:
>>> my_list = ['alpha', 'beta', 'gamma', 'theta']
>>> vowels = 'aeiouAEIOU' # string of 'vowel'
>>> sorted(my_list, key=lambda s: s.translate(None, vowels))
['beta', 'gamma', 'alpha', 'theta']
但是在Python3.x中,为了访问translate
函数,首先需要将字符串转换为字节。例如:
sorted(my_list, key=lambda s: s.encode.translate(None, b'aeiouAEIOU')
# Note: This will work on Python 2.x as well, but encoding is not required there
作为替代方案,您还可以在排序的中使用以下lambda表达式,这在Python 2.x和3.x上都可以正常工作:
sorted(my_list, key=lambda s: ''.join(c for c in s if c not in vowels))
在Python 2.x中,您可以在lambda中使用以下命令从字符串中删除元音:
>>> my_list = ['alpha', 'beta', 'gamma', 'theta']
>>> vowels = 'aeiouAEIOU' # string of 'vowel'
>>> sorted(my_list, key=lambda s: s.translate(None, vowels))
['beta', 'gamma', 'alpha', 'theta']
但是在Python3.x中,为了访问translate
函数,首先需要将字符串转换为字节。例如:
sorted(my_list, key=lambda s: s.encode.translate(None, b'aeiouAEIOU')
# Note: This will work on Python 2.x as well, but encoding is not required there
作为替代方案,您还可以在排序的中使用以下lambda表达式,这在Python 2.x和3.x上都可以正常工作:
sorted(my_list, key=lambda s: ''.join(c for c in s if c not in vowels))
在这里使用命名函数是个好主意。有两个好处-您可以使用描述性名称,并且您有一个可以进行单元测试的函数
def remove_vowels_from_string(s):
return s.translate(None, 'aeiouAEIOU')
new_list = sorted(my_list, key=remove_vowels_from_string)
对于Python3,您可以使用此版本
def remove_vowels_from_string(s):
return translate(dict.fromkeys(map(ord, 'aeiouAEIOU')))
new_list = sorted(my_list, key=remove_vowels_from_string)
在这里使用命名函数是个好主意。有两个好处-您可以使用描述性名称,并且您有一个可以进行单元测试的函数
def remove_vowels_from_string(s):
return s.translate(None, 'aeiouAEIOU')
new_list = sorted(my_list, key=remove_vowels_from_string)
对于Python3,您可以使用此版本
def remove_vowels_from_string(s):
return translate(dict.fromkeys(map(ord, 'aeiouAEIOU')))
new_list = sorted(my_list, key=remove_vowels_from_string)
很好,我也要把它砍掉。我会用一组元音,因为它们不会改变much@ChristianSauer是的,布景更有效。很好,我也准备好了。我会用一组元音,因为它们不会改变much@ChristianSauer是的,set更有效。有人在做NCSS python挑战haha@that2guy确实有人在做NCSS python挑战haha@that2guy确切地