我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗?
Posted
技术标签:
【中文标题】我已经从一个字符串创建了所有子字符串,现在我想将所有以\'aeiou\' 开头的子字符串存储到一个空列表中。你能检查错误吗?【英文标题】:I have created all substrings from a string , now I want to store all sub strings that start with'aeiou' into an empty list . can you check error?我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗? 【发布时间】:2020-08-24 19:40:04 【问题描述】:string ='shivraj'
i=0
j=0
a=[] //storing the sub strings into empty list
for i in range(len(string)): //for loop to create sub strings
for j in range(i,len(string)):
a.append((string[i:j+1]))
j=j+1
i=i+1
s=[] //empty list to store sub strings starting with vowel
k=0
l=0
for x in range(0,len(a)): //loop to run for entire sub string list
if a[k][l] in 'aeiou': // [l] to extract first letter of sub string and match it
s.append(a[k]) with 'aeiou' and store it in s=[] if matched.
k=k+1 // to increment for next index values
运行 enire 代码后,我的输出是一个空列表 (s=[]),您能帮我解决错误吗?
【问题讨论】:
你没有增加l
值
[l] 用于提取子字符串的第一个值,因此我将其保留为 l=0 ,每次循环运行时
你能添加预期的输出吗
预期的输出应该是以元音'aeiou'开头的字符串列表,我非常努力地在代码中找到错误但无法找到,仅供参考,首先我的代码给你一个列表所有子字符串,然后我想有一个单独的列表,我只看到以元音开头的子字符串并且我无法做到,我的意思是错误在代码的最后几行
请edit您的帖子包含您对问题的任何其他信息。避免在 cmets 中添加它,因为它们更难阅读并且更容易删除。帖子的编辑按钮就在帖子标签的下方。
【参考方案1】:
您的代码中的问题是 k
只有在条件为 True 时才会增加。您只需将 k = k+1
移出 if 语句即可。
改变这个
for x in range(0,len(a)):
if a[k][l] in 'aeou':
t.append(a[k])
k=k+1
这个
for x in range(0,len(a)):
if a[k][l] in 'aeou':
t.append(a[k])
k=k+1
使用列表理解的简单解决方案
string ='shivraj'
a = [string[i: j + 1] for i in range(len(string)) for j in range(i, len(string))]
vowels = 'aeiou'
s = [x for x in a if x.startswith(tuple(vowels))]
输出:
['i', 'iv', 'ivr', 'ivra', 'ivraj', 'a', 'aj']
【讨论】:
感谢您的回答,但我真的很想知道我的代码中的错误,如果您能帮助我,这对我来说将是一个学习。 @VarishTripathi 我已经添加了为什么你的代码不工作的解释以上是关于我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗?的主要内容,如果未能解决你的问题,请参考以下文章
我已经从 html 创建了 pdf 现在我想将此 pdf 上传到 cloudinary 或我们的服务器而不将其保存到客户端 PC
从 pandas DataFrame 中的多个字符串列中删除子字符串