在不使用 .sort()
或 sorted()
的情况下,我想通过将每个字符转换为数字,对单词中的字符进行排序,然后对单词进行排序来对列表中的每个单词进行排序。我觉得我已经在这里尝试了一切。我知道我需要将它们转换为小写,然后使用 ord(letter) - 96
获得 3, 26261, 122, 211, 134, 2, 31, 22626, 218, 912
,然后对每个“组”进行排序,然后将每个组转换回字符串。
输入:c zzA aBb bAa Acd B CA zzz ZR IL
输出:abb acd b baa c ca il zr zza zzz
答案 0 :(得分:2)
你应该这样做:
a = ["c", "zzA", "aBb", "bAa", "Acd", "B", "CA", "zzz", "ZR", "I"]
b = sorted([i.lower() for i in a])
print(b)
# ['abb', 'acd', 'b', 'baa', 'c', 'ca', 'i', 'zr', 'zza', 'zzz']
答案 1 :(得分:0)
input_list = ['c','zzA','aBb','bAa','Acd','B','CA','zzz','ZR','IL']
for i in range(len(input_list)):
for j in range (i+1,len(input_list)):
if input_list[i].lower() > input_list[j].lower():
input_list[i], input_list[j] = input_list[j], input_list[i]
print (input_list)
输出将是:
['aBb', 'Acd', 'B', 'bAa', 'c', 'CA', 'IL', 'ZR', 'zzA', 'zzz']
您也可以在不进行循环的情况下执行此操作。 list.sort(key=str.lower)
其中 list
是值列表。
>>> x = ['c','zzA','aBb','bAa','Acd','B','CA','zzz','ZR','IL']
>>> x=
['c', 'zzA', 'aBb', 'bAa', 'Acd', 'B', 'CA', 'zzz', 'ZR', 'IL']
>>> x.sort(key=str.lower)
>>> x
['aBb', 'Acd', 'B', 'bAa', 'c', 'CA', 'IL', 'ZR', 'zzA', 'zzz']