在这段代码中,我试图创建一个函数anti_vowel,它将从字符串中删除所有元音(aeiouAEIOU).我认为它应该可以正常工作,但是当我运行它时,示例文本"嘿看单词!" 以"Hy lk Words!"返回.它"忘记"删除最后一个'o'.怎么会这样?
text = "Hey look Words!"
def anti_vowel(text):
textlist = list(text)
for char in textlist:
if char.lower() in 'aeiou':
textlist.remove(char)
return "".join(textlist)
print anti_vowel(text)
Run Code Online (Sandbox Code Playgroud) 我的问题是关于Python 列表理解的可读性.当我遇到具有复杂/嵌套列表推导的代码时,我发现为了理解意图,我必须多次重新读取它们.
是否有一种直观的方式来朗读列表理解?好像我应该从中间开始"阅读",然后阅读if条件(如果有的话),最后阅读表达式.
以下是我将如何大声朗读以下代码行,以便理解它:
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
Run Code Online (Sandbox Code Playgroud)
"对于List x中的每个元素,以及List y中的每个元素,如果两个元素不相同,则创建一个元组列表."
我正在努力解决的两个例子:你如何大声朗读以下列表理解?
来自Stack Overflow中的另一个问题: [x for b in a for x in b]
Python文档有这个例子:
[[row[i] for row in matrix] for i in range(4)]
任何有关朗读列表理解的方法的建议或指示,以使意图变得更清晰,我们非常感激.
我试图从2个列表中删除重复项.所以我写了这个函数:
a = ["abc", "def", "ijk", "lmn", "opq", "rst", "xyz"]
b = ["ijk", "lmn", "opq", "rst", "123", "456", ]
for i in b:
if i in a:
print "found " + i
b.remove(i)
print b
Run Code Online (Sandbox Code Playgroud)
但我发现匹配项后面的匹配项不会被删除.
我得到这样的结果:
found ijk
found opq
['lmn', 'rst', '123', '456']
Run Code Online (Sandbox Code Playgroud)
但我希望结果如下:
['123','456']
如何修复我的功能来做我想要的?
谢谢.