V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
JasonLaw
V2EX  ›  Python

s 为'eccer', s[3:0:-1]为'ecc',而 s[3:-1:-1]却是'',而不是我期望的'ecce'?

  •  
  •   JasonLaw · 2023-06-24 20:12:24 +08:00 · 1222 次点击
    这是一个创建于 510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    难道是 s[3:-1:-1]等价于 s[3:4:-1]?所以结果为''?


    关联的 LeetCode problem: Valid Palindrome II - LeetCode

    我的出现错误的 solution 。

    class Solution:
        def validPalindrome(self, s: str) -> bool:
            l, r = 0, len(s) - 1
            while l < r:
                if s[l] != s[r]:
                    return s[l + 1:r + 1] == s[r:l:-1] or s[l:r] == s[r - 1:l - 1:-1]
                l += 1
                r -= 1
            return True
    
    第 1 条附言  ·  2023-06-25 11:49:40 +08:00

    Bing AI的回复有点帮助。

    相关的链接:python - Understanding negative steps in list slicing - Stack Overflow

    7 条回复    2023-06-25 11:20:50 +08:00
    luozic
        2
    luozic  
       2023-06-24 20:23:06 +08:00   ❤️ 1
    +---+---+---+---+---+---+
    | P | y | t | h | o | n |
    +---+---+---+---+---+---+
    0 1 2 3 4 5
    -6 -5 -4 -3 -2 -1
    mkroen
        3
    mkroen  
       2023-06-25 10:29:46 +08:00
    s[3::-1]
    JasonLaw
        4
    JasonLaw  
    OP
       2023-06-25 10:34:54 +08:00
    @luozic #2 按照正常理解的话,我会觉得 s[3:-1:-1]的结果是'e'+'c'+'c'+'e',不包含'r',因为它是 stop index 所在的 char 。
    JasonLaw
        5
    JasonLaw  
    OP
       2023-06-25 10:37:00 +08:00
    @mkroen #3 我知道这样子可以,但是这样子我的代码就会变得复杂。我需要判断 stop 是否为-1 ,如果是-1 的话,就需要使用 s[3::-1]替代 s[3:-1:-1]。
    zizon
        6
    zizon  
       2023-06-25 11:08:09 +08:00
    s[3:-1:-1]
    -> s[3:4:-1]
    -> s[4:3:1]
    -> s[4:3] , 4 > 3
    evemoo
        7
    evemoo  
       2023-06-25 11:20:50 +08:00
    左闭右开 + 切片的顺序 = 答案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2939 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:23 · PVG 15:23 · LAX 23:23 · JFK 02:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.