【问题标题】:How do you sort integers in a string [duplicate]你如何对字符串中的整数进行排序[重复]
【发布时间】:2019-02-05 22:11:32
【问题描述】:

这个函数接受一个字符串参数。假设字符串是一系列由空格分隔的整数。忽略任何额外的空格。空字符串或空白字符串返回空字符串。否则,该函数返回一个带有参数整数的字符串 用空格分隔,但现在按排序顺序。不要检查无效字符串。例如,如果参数是43 -1 17,则函数返回-1 17 43。`

在输入为\t42 4 -17 \n的情况下不起作用

def sort_int_string(string):
        strlist = string.split(' ')
        new = []
        for value in strlist:
            value2 = int(value)
            new.append(value2)
        new = sorted(new)
        strlist2 = []
        for number in new:
            number = str(number)
            strlist2.append(number)
        final = ' '.join(strlist2)
        return final

【问题讨论】:

  • 您能否告诉我们您迄今为止尝试解决的任何问题,这可能会让我们知道我们可以在哪里帮助您解决您遇到的任何问题
  • 这是我到目前为止的代码... def sort_int_string(string): strlist = string.split(' ') new = [] for value in strlist: value2 = int(value) new .append(value2) new = sorted(new) strlist2 = [] for number in new: number = str(number) strlist2.append(number) final = ' '.join(strlist2) return final
  • @JorgeGomezDelCampo 请将该代码移出评论并进入您的问题
  • 似乎是什么问题?您的代码返回“-1 17 43”。你期待什么?
  • 在输入为“\t42 4 -17 \n”的情况下不起作用

标签: python string python-3.x


【解决方案1】:

这个列表理解应该处理你遇到的空格:

s = "\t42 4 -17 \n"
sorted([int(x) for x in " ".join(s.split()).split()])

[-17, 4, 42]

【讨论】:

    【解决方案2】:

    @VanTan 已经解释了您的代码存在的问题。但你也可以使用:

    x = '43 -1 17'
    
    res = ' '.join(map(str, sorted(map(int, x.split()))))
    
    # '-1 17 43'
    

    【讨论】:

      【解决方案3】:

      根据您的评论,更改行:

      strlist = string.split(' ')
      

      strlist = string.split()
      

      这应该有效,因为当未指定 sep 时,它默认为空白。 [ \t\n\r\f\v] 都是空格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-21
        • 2020-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多