使用Python删除某些对象的切片列表

2024-10-03 11:26:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试删除word中的元音对象(word是组成userWord的字母列表)。如果userWord以辅音开头,代码可以正常工作(删除所有元音),但是如果useWord以元音开头,它不会删除第一个元音,而我想删除useWord中的所有元音。我跳过什么了吗?对不起,我是初学者。我正在使用Python 3.8.5

def voweleater(userWord):
    word = list(userWord)
    vowels = ['a', 'e', 'i', 'o', 'u']
    for letter in word:
        for i in vowels:
            if i in word:
                word.remove(i)
        print(letter)
voweleater("abstemious")

Code output:

a
s
t
m
s

Tags: 对象代码in列表for字母word元音
1条回答
网友
1楼 · 发布于 2024-10-03 11:26:28

正则表达式方法(更干净,可能更好优化)

from re import sub

def remove_vowels(word):
    return sub(r'[aeiouAEIOU]', "", word)

print(remove_vowels("abstemious")) # Returns "bstms"

正则表达式[aeiouAEIOU]匹配任何不带重音的元音,然后使用re.sub将找到的匹配替换为空白

数组拆分方法(更详细,可能更慢)

def remove_vowels(word):
    characters = list(word)
    vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']

    for index, letter in reversed(list(enumerate(characters))):
        if letter in vowels:
            characters.pop(index)
    
    return "".join(characters)

print(remove_vowels("abstemious")) # Returns "bstms"

通过这种方式,您将反向遍历字符(因此您将始终从末尾删除值,以防止您意外尝试读取不再存在的索引)。如果当前字母是元音,则将其删除。然后返回一个连接其余字符的字符串

相关问题 更多 >