在python中反转句子

时间:2017-01-05 12:09:32

标签: python loops indexing

感谢您的所有答案。我知道我的代码错了。

请不要向我提供解决方案,因为我确实有一些解决方案,但我想了解我的代码无效。

我认为这是由while x <= -len(split_result):"引起的,但我认为逻辑是正确的。我的代码出了什么问题?

O_string = ("Me name is Mr_T")
split_result = O_string.split()
print(split_result)

x=0
list=[]

while x <= -len(split_result):
    list.append(split_result[x-1])
    x = x-1

result=" ".join(list)
print (result)

6 个答案:

答案 0 :(得分:7)

您可以使用[::-1]反转列表:

print(' '.join(O_string.split()[::-1]))

输出:

'Mr_T is name Me'

此处[::-1]表示从开头到结尾的所有内容,步长为负一。

或者,您可以使用内置函数reversed

>>> ' '.join(reversed(O_string.split()))
'Mr_T is name Me'

关于您的算法。在我看来,在负面指数中思考总是更加困难。我建议采取积极态度:

O_string = ("Me name is Mr_T")
split_result = O_string.split()

res = []
x = len(split_result) - 1
while x >= 0:
    res.append(split_result[x])
    x = x-1

result=" ".join(res)
print (result) 

输出:

'Mr_T is name Me'

下面:

x = len(split_result) - 1

为您提供列表的最后一个索引。我们开始使用0建立索引。因此,您需要从列表的长度中减去1

你算了下来:

x = x-1

并在获得否定索引后立即停止:

while x >= 0:

提示:请勿使用list作为变量名称。它是内置的,最好不要用于命名自己的对象。如果这样做,您就不能再轻松使用list()(在同一名称空间中)。

答案 1 :(得分:1)

可以使用反向函数以及str.join

statuses.map(result => {
    (status.matchStatus, status.source) match {
      case ("Matched", Some(API.name)) => //Add status to a matchedApi seq
      case ("Matched", Some(MANUAL.name)) => //Add status to a matchedManual seq
      case ("Changed", Some(API.name)) => //Add status to a changedApi seq
      case ("Changed", Some(ENTRY.name)) => //Add status to a changedManual seq          
    }
})

答案 2 :(得分:1)

在python中,list[::-1]将为您提供列表,其中列表的所有元素都存储在反向索引位置。 ie。)reverseList1=list1[::-1]使用它。

答案 3 :(得分:1)

回答&#34;我的代码出了什么问题?&#34;,让我们看一下shell中发生的事情:

>>> O_string = ("Me name is Mr_T")
split_result = O_string.split()
print(split_result)
['Me', 'name', 'is', 'Mr_T']
>>> x=0
>>> len(split_result)
4
>>> -len(split_result)
-4
>>> x
0
>>> 0 <= 4
True
>>> 0 <= -4
False
>>> x <= -len(split_result)
False
>>> while False: print('this will not get printed')

因此,你的while循环条件永远不会成立,循环永远不会发生。以下是一个有效的例子:

x = -1
while x >= -len(split_result):
    list.append(split_result[x])

答案 4 :(得分:0)

您可以尝试:

>>> O_string = ("Me name is Mr_T")
>>> O_list = O_string.split()
>>> O_list.reverse()
>>> " ".join(O_list)
'Mr_T is name Me'

答案 5 :(得分:0)

您可以使用反转来翻转句子:

o_string = "Me name is Mr_T"
words = sentence.split()
o_string = " ".join(reversed(words))
print(o_string)