相关疑难解决方法(0)

循环"忘记"删除一些项目

在这段代码中,我试图创建一个函数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 string list

77
推荐指数
6
解决办法
7039
查看次数

如何朗读Python列表理解?

我的问题是关于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中的每个元素,如果两个元素不相同,则创建一个元组列表."

我正在努力解决的两个例子:你如何大声朗读以下列表理解?

  1. 来自Stack Overflow中的另一个问题: [x for b in a for x in b]

  2. Python文档有这个例子: [[row[i] for row in matrix] for i in range(4)]

任何有关朗读列表理解的方法的建议或指示,以使意图变得更清晰,我们非常感激.

python list-comprehension

22
推荐指数
1
解决办法
3613
查看次数

python从2个列表中删除重复项

我试图从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']

如何修复我的功能来做我想要的?

谢谢.

python list duplicate-removal

9
推荐指数
4
解决办法
2万
查看次数