【问题标题】:Python : Calling functions from inside another function parameterPython:从另一个函数参数内部调用函数
【发布时间】:2018-10-26 00:35:16
【问题描述】:

我是 python 新手,所以请原谅外行的描述。

问题:给定一个句子,返回一个单词颠倒的句子

我的解决方案:

def sentence_reverse(text):
    a = text.split()
    a.reverse()
    return ' '.join(a)

输出:

sentence_reverse('I am home') --> 'home am I'
sentence_reverse('We are ready') --> 'ready are We'

代码按预期方式工作,但我的问题是,为什么我不能直接从前一个函数的返回结果中进行函数调用。我,我

为什么我不能做类似的事情

return ' '.join(text.split().reverse())

这在 java 中可以正常工作,因为我从 text.split() 获得 List 对象,我将使用 reverse() 函数进行操作,该函数将返回倒排列表,然后由 join( ) 将这个列表变成一个字符串。

这个,我也试过了:

text.split() 返回一个列表,并在其上应用 .reverse() 函数应该以相反的顺序返回同一列表的元素,但是当我执行此行时,print(text.split().reverse()) ,我得到None

【问题讨论】:

  • 你可以看看.reverse。它不返回任何内容或不返回任何内容。 .reverse 反转列表。
  • 另外,您可以查看stackoverflow.com/a/3705705/5916727中不同反向方法的比较

标签: python python-3.x


【解决方案1】:

因为reverse返回None,并更新列表,所以None对join无效。

是的,所以 reverseinplace 函数,所以没有办法解决这个问题。

所以使用reversed:

return ' '.join(reversed(text.split()))

[::-1]:

return ' '.join(text.split()[::-1])

来自文档:

您可能已经注意到,仅修改列表的 insert、remove 或 sort 等方法没有打印返回值——它们返回默认值 None。 [1] 这是 Python 中所有可变数据结构的设计原则。


代码示例之后。

https://docs.python.org/3/tutorial/datastructures.html

【讨论】:

    【解决方案2】:

    这将返回我的倒排列表..

    这就是问题所在。在 Python 中,调用 list.reverse() 不会返回反向列表。它只是将其反转到位。

    你需要的是:

    return " ".join(text.split()[::-1])
    

    【讨论】:

      【解决方案3】:

      不使用.reverse,可以使用python列表迭代器来反转:

      me = 'ready are We'
      " ".join(me.split()[::-1])
      >>> 'We are ready'
      

      【讨论】:

        猜你喜欢
        • 2017-05-08
        • 2018-06-12
        • 2016-01-04
        • 2015-07-04
        • 2017-09-22
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 2014-01-01
        相关资源
        最近更新 更多