【问题标题】:Python 3 Can Someone Explain How This Is Indexed?Python 3 有人可以解释它是如何被索引的吗?
【发布时间】:2026-01-19 17:45:01
【问题描述】:

这里是新用户,所以请理解我的问题/代码是否完全符合标准,我会考虑任何建议。

该代码旨在计算字符串(s)中子字符串(sb)的数量并打印结果。

我基本上希望有人能解释一下这段代码是如何编入索引的。我不太了解的是“for i in range”部分,特别是变量 i(字符串 's' 的长度范围)用于开始的索引,然后是 i 和 sub_len 的总和成为结局(这让我感到困惑)。然后,如果它等于 substring(sb) 它 1 添加到结果中。经过几个小时的阅读和玩耍,我几乎理解了它。请随时解释整个代码,以便它可以帮助任何其他新手。感谢您的帮助。

    s = 'my given stringstringstring'
    sb = 'string'
    count = 0

    sub_len = len(sb)

    for i in range(len(s)):
        if s[i:i+sub_len] == sb:
            count += 1

    print(count) 

【问题讨论】:

    标签: python-3.x indexing


    【解决方案1】:

    为简单起见,我将根据s = "stringstringstring" 的假设行事。下面给出的原则对于任何给定的起始字符串和子字符串都是正确的。

    我相信前四行是相对不言自明的,所以我将从 for 循环开始。

    第一行for i in range (len(s)): 使该循环对字符串s 中的每个字母执行一次。

    它的核心是索引命令s[i:i+sub_len]。它的作用是第一次执行以i = 0 开头。如果 sb 是“字符串”,则 len(sb) = 6。这意味着s[i:i+sub_len] 简化为s[0:6],它从第一个字符(索引0)开始,包括第二个、第三个、第四个、第五个和第六个字符。这等于“字符串”。因为sb 也等于“字符串”,所以 if 语句将被评估为True,并且计数将增加 1。

    对于第二次迭代,i = 1。这意味着s[i:i+sublen] 简化为s[1:7],它从second 字符开始包括第三、第四、第五、第六和第七 字符。这等于“字符串”,不等于sb。 if 将评估为False,并且计数不会增加。

    下一次迭代将简化为s[2:7],即“ringst”。每次迭代将评估为 False 直到迭代 7,其中索引简化为 s[6:12]。这再次等于“字符串”,并且 if 将再次评估为 True

    【讨论】:

      最近更新 更多