in reply to Re: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
in thread Five Ways to Reverse a String of Words (C#, Perl 5, Perl 6, Ruby, Haskell)

TMTOWTDI even in Python, these days:

def reverseWords(words): return ' '.join([word for word in words.split()][::-1])

I'd probably tweak it a bit in real-world code, though. Generators and list comprehensions make me go cross-eyed sometimes.

Update: Adjusted the code to match the full goal.

  • Comment on Re^2: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
  • Download Code

Replies are listed 'Best First'.
Re^3: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
by ambrus (Abbot) on Dec 12, 2006 at 22:03 UTC

    You don't need [word for word in ...]. That's just the same as map { $_ } ... in perl, an identity op on lists (more or less).

    >>> def reverseWords(words): ... return ' '.join(words.split()[::-1]) ... >>> reverseWords(" one two three four ") 'four three two one'
Re^3: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
by Anonymous Monk on Jun 05, 2007 at 13:41 UTC
    [word for word in words.split()] ?
    No need for a list comprehensions here. How about this...
    def reverseWords(words): return ' '.join(words.split()[::-1])
      It is sometimes hard to not use ::-1 once learnt, but you can use reversed which makes it clearer:
      >>> def reverseWords(word):
      ... 	return " ".join( reversed(word.split()) )
      ... 
      >>> reverseWords("  one   two three four    ")
      'four three two one'
      

      - Paddy