有没有办法通过此代码来理解列表?

时间:2020-02-06 20:41:20

标签: python python-3.x

这是我编写的用于检查字符串中sub_string出现次数的代码:

a = 'ABCDCD' #Main String
b = 'CDC'    #Sub String

sub_Len = len(b)
occurrence = 0

for s in range(len(a)):
    if a[s:s+sub_Len] == b:
        occurrence += 1 

3 个答案:

答案 0 :(得分:2)

这不是列表理解,但是对于您的代码来说更短:

processBroadcastElement()

Docs

答案 1 :(得分:1)

虽然这里不需要列表理解,但是您可以使用列表理解将代码减少到一行,以计算子字符串的出现次数

print(sum([1 for s in range(len(a)-len(b)+1) if a[s:s+len(b)] == b]))

此处列表理解为每次出现的子字符串创建一个1列表,然后使用sum()添加计数

答案 2 :(得分:1)

这是一种方法:

sum(1 for i in range(len(a)) if a.startswith(b, i))
  • 我们将startswith与起始索引一起使用,以避免切分字符串。
  • 从技术上讲,这是一个生成器表达式,可避免在将中间列表输入sum之前创建中间列表。