【发布时间】:2021-02-21 16:34:59
【问题描述】:
我正在尝试将这个字符串列表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(),同时维护它们的子字符串组。所以我不需要保留空格并对子字符串进行排序(当它们是数字形式时)。
【问题讨论】:
-
为什么不直接对每组字符进行排序呢?
-
你想要的最终结果是什么?
-
我想要
c zza abb baa acd b ca zzz zr il->abb acd b baa c ca il zr zza zzz -
我正在从文件中读取,需要将它们转换为
int并对其编号进行排序,然后将其转换回str,然后推送到输出文件。与仅使用内置的sorted()或.sort()
标签: python python-3.x string list-comprehension