[英]how to find words in a sentence that have even reverse of those words in python
[英]reverse words in a sentence using Python?
我试图在一个句子中反转一个单词。
例如:
arr = [ 'p', 'e', 'r', 'f', 'e', 'c', 't', ' ', 'm', 'a', 'k', 'e', 's', ' ', 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e' ]
应该
[ 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e', ' ', 'm', 'a', 'k', 'e', 's', ' ', 'p', 'e', 'r', 'f', 'e', 'c', 't' ]
我写了下面的代码,它反转整个数组然后反转每个单词
def reverse_words(arr):
def mirrorReverse(arr,start,end):
while(start<end):
tmp=arr[start]
arr[start]=arr[end]
arr[end]=tmp
start+=1
end-=1
n=len(arr)
mirrorReverse(arr,0,n-1)
for i in range(len(arr)):
if arr[i]==' ' and start==0: #first word
mirrorReverse(arr,start,i-1)
start=i+1
elif i==len(arr)-1: #last word
mirrorReverse(arr,start,i)
elif arr[i]==' ' and start!=None: #middle
mirrorReverse(arr,start,i-1)
start=i+1
return arr
这工作正常并输出所需的答案但是当我使用不同的示例时它不起作用:
测试 1:
["a"," "," ","b"]
预期:
["b"," "," ","a"]
实际:
['a', ' ', ' ', 'b']
test2:
["y","o","u"," ","w","i","t","h"," ","b","e"," ","f","o","r","c","e"," ","t","h","e"," ","m","a","y"]
output:
['y', 'o', 'u', ' ', 'w', 'i', 't', 'h', ' ', 'b', 'e', ' ', 'f', 'o', 'r', 'c', 'e', ' ', 't', 'h', 'e', ' ', 'm', 'a', 'y']
即使 test2 类似于上面的主要示例,它工作得非常好。 任何帮助
首先,在 Python 提示符下:
>>> def revwords(str):
... list = str.split()
... list.reverse()
... return ' '.join(list)
...
>>> revwords('The quick brown fox jumped over the lazy dogs.')
'dogs. lazy the over jumped fox brown quick The'
通过进行一些重组和拆分,我们可以将上述内容与所需的字符数组表示一起使用。 在 Python 提示符处继续:
>>> list(revwords(''.join(['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'])))
['w', 'o', 'r', 'l', 'd', ' ', 'H', 'e', 'l', 'l', 'o']
请针对您的具体案例尝试以下解决方案:
if __name__ == "__main__":
x = ['p', 'e', 'r', 'f', 'e', 'c', 't', '', 'm', 'a', 'k', 'e', 's', '', 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e']
words = []
word = ""
for letter in x:
if len(letter) == 1:
word += letter
else:
words.append(word)
word = ""
words.append(word) # add the last one
result = []
for w in words[::-1]:
for letter in w:
result.append(letter)
result.append("")
result.pop() # remove the last one ""
print(result)
这是反转句子然后加入的一种方法:
sentence = "perfect makes practice"
s_list = sentence.split(" ")
s_list.reverse()
print(" ".join(s_list))
你的代码看起来不错。 您的示例和代码中有两个空格。但是测试用例有一个空格。 当我复制粘贴您的代码并将 if's 中的双空格更改为单个空格时,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.