如何删除在Python列表中创建的空值?

时间:2019-05-07 12:25:01

标签: python

我要删除在Python列表中创建的空值。

我的代码在这里-https://pastebin.com/whz7t4yR

我试图解决Codeforces中的“字符串任务”问题 每次找到一个字母,我都会在列表中的那个字母之后插入一个点。但是,在插入点之后会创建一个空值。

我尝试删除空值。但显然,它仅适用于特定的测试用例(“ Codeforces”)。对于其他两个测试用例,它显示了

  

“ IndexError:列表索引超出范围”

for l in range(0,len(s)):    
    if(s[l] in letter and s[l+1] in letter):
        s.insert(l+1, '.')
        print("inside IF, index[",l,"]=>", s[l])
    elif(s[l] in letter):
        s.insert(l+1,'.')
        #del (s[l+2])
        print("inside ELIF, index[",l,"]=>", s[l])
    else:
        print("inside ELSE, index[",l,"]=>", s[l])
        continue

预期结果:

 .c.d.f.r.c.s

实际结果:

 .c.d.f.r.cs

3 个答案:

答案 0 :(得分:1)

for l in range(0,len(s)):
    if(...s[l+1]...)

这些在您的前两行中,保证l+1超出列表s的范围

如果您需要像这样访问下一个元素,请将范围更改为for l in range(0,len(s)-1):,这样您就知道您将始终拥有一个s[l+1]元素

答案 1 :(得分:0)

尝试一下。完整的解决方案。

st = input()
vowels = ['a','e','i','o','u','y']
for i in st.lower():
    if i not in vowels:
        print(f'.{i}', end='')

答案 2 :(得分:0)

您还可以使用以下更简单的方法来解决问题:

    word = input("").lower()
    no_Vowel = word.translate({ord(change): None for change in "aoyeui"})
    no_VowelsPoint = f".{no_Vowel}"
    points = ".".join(no_Vowels).replace("..", ".")
    print(points.lower())