Python 使用列表理解将排序后的字符串转换回整数列表
假设我们有一个名为Python 使用列表理解将排序后的字符串转换回整数列表,python,Python,假设我们有一个名为heights的字符串(人的身高),如下所示: "89\n169\n168\n176\n171\n180-" 我想对它们进行排序,因此我的步骤是: 去掉不必要的字符 拆分“\n”分隔符,生成字符串编号列表 将每个数字转换为int 对列表排序 再次将列表中的每个元素转换回str 所以我所做的是: heights = sorted(int(height) for height in heights.strip(" -\n").split('\n')) heights = str(
heights
的字符串(人的身高),如下所示:
"89\n169\n168\n176\n171\n180-"
我想对它们进行排序,因此我的步骤是:
int
str
heights = sorted(int(height) for height in heights.strip(" -\n").split('\n'))
heights = str(height) for height in heights
这实际上是可行的,但解决方案是两个列表的压缩,我认为有一个解决方案只有一行。我认为以下应该可行: 它应该返回字符串值,但按整数值排序。Sorted接受一个关键参数,该参数告诉它对列表元素执行一些函数并对其进行排序,在这种情况下,我们只需将它们映射到一个整数,就可以按照所需的顺序进行排序
heights = sorted(heights.strip(" -\n").split('\n'), key=int)
如果字符串列表中需要最终输出
list(map(str,sorted(map(int,heights.rstrip('-').split()))))
但是现在,
[height for height in height.strip(“-\n”).split('\n')]
只是height.strip(“-\n”).split('\n')
,listcomp没有给我们买任何东西。另外,key=lambda x:int(x)
只是key=int
,将函数调用包装到另一个函数中不会改变任何东西。(如果目标函数比int
更复杂,我们当然可能需要一个包装器,但在这里我们似乎不需要。)b=sorted(a.replace('-','').split('\n'))
@Rohit Pandey排序“1000”<“200”
。如果其中一个数字是负数呢<代码>条带在这里更安全。@JON PANTAU,所需的输出。排序(列表(映射(int,a.replace('-','')))
list()
内部强制转换sorted()
)。你可以不用。应该小心使用。尝试使用负片输出heights='169\n-168\n176\n171\n180-'
@mad_uuyeah不符合示例好的点,可以使用r.strip()
,并且可以避免这种情况issue@mad_固定,现在应该只删除连字符,如果它是不必要的和尾随整数,不代表负
l = [str(j) for j in sorted([int((i.rstrip('-'))) for i in h.split('\n')])]