extended slicing and negative stop value problem
Chris Angelico
rosuav at gmail.com
Sat Aug 20 15:53:53 EDT 2011
On Sat, Aug 20, 2011 at 7:52 PM, Max <maxmoroz at gmail.com> wrote:
> That doesn't work if it's set in a loop or if it's calculated as a
> formula. For example, this very simple code doesn't work because of
> the "-1 problem".
>
Right, which is what I meant by setting it to an explicit None:
if input[starting_pos:ending_pos+1] == input[ending_pos :
starting_pos-1 if starting_pos >= 0 else None : -1]:
You're right that it starts to get ugly, though.
Of course, there are other ways to find the longest palindromic
substring in a string:
# I wouldn't bother counting a one-character "palindrome"
for substr_length in range(len(input),1,-1):
for starting_pos in range(len(input)-substr_length+1):
ending_pos = starting_pos + substr_length - 1
testme = input[starting_pos:ending_pos+1]
if testme == testme[::-1]:
print(testme)
exit(0)
That is, snip out the string and then reverse that snipped piece,
rather than reverse-slicing from the original. This doesn't solve the
issue of slicing backwards with variable halts, though.
ChrisA
More information about the Python-list
mailing list