我正在尝试将这个字符串列表arr = c zza abb baa acd b ca zzz zr il转换为数字,我这样做了,但我将它们连接到一个列表中,这不是我想要的。我希望它们保持原来的结构(子字符串之间有空格)。如果我运行以下命令:
a = []
for char in arr: # is the issue here because I'm iterating over each char?
number = ord(char.lower()) - 96
a.append(number) # what do I change here, when appending, to keep the space?我得到:[3, -64, 26, 26, 1, -64, 1, 2, 2, -64, 2, 1, 1, -64, 1, 3, 4, -64, 2, -64, 3, 1, -64, 26, 26, 26, -64, 26, 18, -64, 9, 12],它将空格转换为-64,所以如果我运行这个命令,就会删除-64。
a = [x for x in a if x != -64]然后返回:[3, 26, 26, 1, 1, 2, 2, 2, 1, 1, 1, 3, 4, 2, 3, 1, 26, 26, 26, 26, 18, 9, 12]
然而,我仍然将它们放在一个组中,而不是保持它们原来的空间分隔。总体而言,我需要对每组字符串进行排序,但不能使用sorted()或.sort(),同时要维护它们的子字符串组。所以我不能,我需要保留空格并对子字符串进行排序(当它们是数字形式时)。
发布于 2021-02-22 00:39:52
您根本不需要转换为整数,即可对每组字符进行排序:
>>> s = "c zza abb baa acd b ca zzz zr il"
>>> " ".join("".join(sorted(grp)) for grp in s.split())
'c azz abb aab acd b ac zzz rz il'或者,如果您的意思是对组本身进行排序:
>>> " ".join(sorted(s.split()))
'abb acd b baa c ca il zr zza zzz'https://stackoverflow.com/questions/66304572
复制相似问题