Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^6: Converting python list range expressions to perl

by ibm1620 (Hermit)
on Dec 05, 2022 at 21:36 UTC ( [id://11148580]=note: print w/replies, xml ) Need Help??


in reply to Re^5: Converting python list range expressions to perl
in thread Converting python list range expressions to perl

Here's one:

[\@test_array, '[3:4]', 'd'],
In my OP I mentioned needing help from "bilingual" (i.e. Perl and Python) people; otherwise I'd have included a description of Python's slice notation. I'm sorry if this was negligence on my part, but I assumed that anyone answering would be familiar with Python's oddball slice semantics. [a:b] means "the characters starting at offset a and ending at offset b-1". Unless a or b is negative in which case .. hell, I don't remember ;-)

The code I posted correctly slices arrays using Pythonic parameters, although it doesn't attempt to handle the optional third argument, a step value. And I'm happy to say that the translation effort has succeeded and Perl is now churning out gibberish sonnets at a much faster rate than its Python equivalent.

Update:

It correctly slices arrays if the arguments aren't nonsensical -- like being out of range, which Python forgives. It needs a few more sanity tests to handle those cases.

Replies are listed 'Best First'.
Re^7: Converting python list range expressions to perl
by LanX (Saint) on Dec 05, 2022 at 22:11 UTC
    > Unless a or b is negative in which case .. hell, I don't remember ;-)

    AFAIR from a previous discussion is Perl using closed intervals while Python using half open ones.

    That means the end point is excluded in Python.

    One advantage is that [:X] and [X:] are splitting an interval including X exactly into two dijoint parts, without needing to decrement the first end boundary.

    I.O.W always $end-- when translating to Perl.

    Cheers Rolf
    (addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
    Wikisyntax for the Monastery

      Personally I prefer offset/length-type expressions, as in substr(), to begin/end expressions of Perl slices and Python ranges, especially when it comes to the way negative values work. I'm sure it's just a matter of familiarity, though.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11148580]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-04-25 14:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found