Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表理解将排序后的字符串转换回整数列表_Python - Fatal编程技术网

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-"
我想对它们进行排序,因此我的步骤是:

  • 去掉不必要的字符
  • 拆分“\n”分隔符,生成字符串编号列表
  • 将每个数字转换为
    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')])]