如何在Python中直接生成无空字符串的子串组合
解决Python生成非空子串组合的问题
你可以直接调整循环中i的起始范围,避免生成空字符串。原代码中i从0开始,当i < j时,切片s[j:i+1]会得到空串,只要让i从j开始遍历就能解决这个问题。
修改后的代码:
s = 'edsd' l = [] j = 0 while j < len(s): # i 从 j 开始,确保切片的起始索引不大于结束索引 for i in range(j, len(s)): l.append(s[j:i + 1]) j += 1 print(l)
运行这段代码会直接输出预期结果:['e', 'ed', 'eds', 'edsd', 'd', 'ds', 'dsd', 's', 'sd', 'd']
原代码问题分析
原代码中for i in range(len(s))让i从0到3遍历,当j=1时,i=0会执行s[1:1],这是一个空切片;同理j=2时,i=0和i=1都会产生空串,这就是输出里出现多个空字符串的原因。调整i的起始值为j,就能保证切片的起始位置j小于等于结束位置i+1,从而只生成非空的子串。
内容的提问来源于stack exchange,提问作者Mak Hus
相关产品推荐
相关产品推荐

