使用Python在句子中反词?

问题描述 投票:0回答:2

我正在尝试将句子中的一个单词反转。

例如:arr = ['p','e','r','f','e','c','t','','m','a','k','e','s','','实践' ]应该是['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  

这很好,可以输出所需的答案,但是当我使用其他示例时,它不起作用:

test 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“]输出:['y','o','u','','w','i','t','h',',','b','e',',','f','o','r','c','e',','t',' H','e','','m','a','y']

尽管test2与上面的主要示例相似,但效果很好。任何帮助

python string word
2个回答
2
投票

您只需要返回反向列表吗?

您可以使用ls[::-1]

def reverse_words(arr):
    return arr[::-1]

reverse_words(["a"," "," ","b"])
# ['b', ' ', ' ', 'a']

reverse_words(["y","o","u"," ","w","i","t","h"," ","b","e"," ","f","o","r","c","e"," ","t","h","e"," ","m","a","y"])

# ['y', 'a', 'm', ' ', 'e', 'h', 't', ' ', 'e', 'c', 'r', 'o', 'f', ' ', 'e', 'b', ' ', 'h', 't', 'i', 'w', ' ', 'u', 'o', 'y']


0
投票

这里是拆分和合并的一种方法:

from itertools import chain
list(chain.from_iterable(' '.join(''.join(arr).split()[::-1])))
# ['p', 'r', 'a', 'c', 't', 'i', 'c', 'e', ' ', 'm', 'a', 'k', 'e', 's', ' ', 
#  'p', 'e', 'r', 'f', 'e', 'c', 't']
© www.soinside.com 2019 - 2024. All rights reserved.