| | |
Reverse an Integer
Thread Solved |
When I first looked at this problem, I thought it would be very simple routine stuff. To my surprise this thing is loaded with programming possibilities.
[php]# reverse integer digit by digit, the long way ...
x = 12345
x_string = str(x) # "12345"
x_list = list(x_string) # ['1', '2', '3', '4', '5']
# uses reversed on the list
x_reversedlist = reversed(x_list) # ['5', '4', '3', '2', '1']
x_reversedstring = "".join(x_reversedlist) # "54321"
x_reversed = int(x_reversedstring) # 54321
print x_reversed
[/php]Why use the list as a middleman when you can call reversed() on the string?
[php]# reverse integer digit by digit, slightly modified ...
x = 12345
x_string = str(x) # "12345"
# uses reversed() directly on the string
x_reversedobject = reversed(x_string) # <reversed object at 0x009D2D70>
x_reversedlist = list(x_reversedobject) # ['5', '4', '3', '2', '1']
x_reversedstring = "".join(x_reversedlist) # "54321"
x_reversed = int(x_reversedstring) # 54321
print x_reversed
[/php]That looks like the setup for a one-liner:
[php]# reverse integer digit by digit, as a one liner ...
x = 12345
x_reversed = int("".join(list(reversed(str(x)))))
print "%d reversed --> %d" % (x, x_reversed) # 12345 reversed --> 54321
[/php]String slicing should cut that really short:
[php]# reverse integer digit by digit, simpler with slicing ...
x = 12345
x_reversed = int(str(x)[::-1])
print "%d reversed --> %d" % (x, x_reversed) # 12345 reversed --> 54321
[/php]
[php]# reverse integer digit by digit, the long way ...
x = 12345
x_string = str(x) # "12345"
x_list = list(x_string) # ['1', '2', '3', '4', '5']
# uses reversed on the list
x_reversedlist = reversed(x_list) # ['5', '4', '3', '2', '1']
x_reversedstring = "".join(x_reversedlist) # "54321"
x_reversed = int(x_reversedstring) # 54321
print x_reversed
[/php]Why use the list as a middleman when you can call reversed() on the string?
[php]# reverse integer digit by digit, slightly modified ...
x = 12345
x_string = str(x) # "12345"
# uses reversed() directly on the string
x_reversedobject = reversed(x_string) # <reversed object at 0x009D2D70>
x_reversedlist = list(x_reversedobject) # ['5', '4', '3', '2', '1']
x_reversedstring = "".join(x_reversedlist) # "54321"
x_reversed = int(x_reversedstring) # 54321
print x_reversed
[/php]That looks like the setup for a one-liner:
[php]# reverse integer digit by digit, as a one liner ...
x = 12345
x_reversed = int("".join(list(reversed(str(x)))))
print "%d reversed --> %d" % (x, x_reversed) # 12345 reversed --> 54321
[/php]String slicing should cut that really short:
[php]# reverse integer digit by digit, simpler with slicing ...
x = 12345
x_reversed = int(str(x)[::-1])
print "%d reversed --> %d" % (x, x_reversed) # 12345 reversed --> 54321
[/php]
May 'the Google' be with you!
Thank you! I am still trying to digest the one liners, particularly:
Can anybody break that down for me so I can see the flow?
x_reversed = int(str(x)[::-1])
No one died when Clinton lied.
•
•
•
•
Thank you! I am still trying to digest the one liners, particularly:
Can anybody break that down for me so I can see the flow?x_reversed = int(str(x)[::-1])
x_string = str(x) # "12345"
x_reversedstring = x_string[::-1] # "54321"
x_reversed = int(x_reversedstring) # 54321
[/php]
drink her pretty
You need to fill in the defaults to get a better feeling for slicing:
[php]
str1 = "madam"
begin = 0 # default is 0
end = len(str1) # end is exclusive, default is length of string
step = -1 # - sign --> from the end in steps of 1, default is 1
reversed_string = str1[begin:end:step]
[/php]
[php]
str1 = "madam"
begin = 0 # default is 0
end = len(str1) # end is exclusive, default is length of string
step = -1 # - sign --> from the end in steps of 1, default is 1
reversed_string = str1[begin:end:step]
[/php]
Last edited by vegaseat; Oct 30th, 2006 at 11:30 pm.
May 'the Google' be with you!
•
•
Join Date: Jul 2006
Posts: 608
Reputation:
Solved Threads: 150
int(str(x)[::-1])
What the ... I never knew you could do that!!!
LOL!
Jeff
Testing results:
[php]
>>> s = "my test string"
>>> s[::-1]
'gnirts tset ym'
>>> s[::2]
'm etsrn'
>>> s[::-2]
'git sty'
>>>
[/php]

•
•
Join Date: Apr 2006
Posts: 148
Reputation:
Solved Threads: 40
Its all in the docs.
Here it is:
http://docs.python.org/ref/types.html
under the heading "Sequences"
Here it is:
http://docs.python.org/ref/types.html
under the heading "Sequences"
![]() |
Similar Threads
- can some one take a look at my program and help me (C++)
- Reversing Integer, Magic Squares, and LCM problems (Java)
Other Threads in the Python Forum
- Previous Thread: Python for Birthday (but having tech difficulties)
- Next Thread: Tkinter weirdness
| Thread Tools | Search this Thread |
advanced aliased bash beginner bits calling casino changecolor clear command convert corners count csv cturtle cursor def definedlines dictionary digital dynamic dynamically event events examples external file float format frange function google gui hints homework i/o iframe import info input jaunty java line linux list lists loop matching mouse multiple number numbers obexftp output parsing path port prime programming projects py py2exe pygame pygtk python random rational raw_input recursion return scrolledtext signal singleton skinning stderr string strings subprocess table tails terminal text thread threading time tkinter tlapse tuple tutorial ubuntu unicode urllib urllib2 valueerror variable voip web-scrape whileloop word wxpython






