Я создал все подстроки из строки, теперь я хочу сохранить все подстроки, начинающиеся с «aeiou», в пустой список. вы можете проверить ошибку? - PullRequest
1 голос
/ 09 мая 2020
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

Мой вывод выглядит как пустой список (s = []) после запуска кода enire. Не могли бы вы помочь мне получить ошибку?

1 Ответ

1 голос
/ 09 мая 2020

Проблема в вашем коде: k будет увеличиваться, только если условие истинно. Вы просто переместите 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']
...