Python:查找特定列表项并替换

时间:2014-03-21 15:43:21

标签: python list

我试图通过阅读论坛来寻找这个问题的解决方案,但是提供的许多解释对我来说太先进了,并且想知道是否有更简单的方法。

所以我的问题是:

my_list = [1, 2, 3, 4, 5, 6]

my_list中,我想用" x"替换所有偶数。

是否有方法我可以通过循环并替换它们?

好的,所以我希望有一个简单的方法,比如my_list.replace函数,但意识到没有。所以这里是我需要定位和替换的上下文:

def censor(text, word):
    string = text.split()
    for n in range(len(string)):
        if string[n] == word:
            string[n] == "*" * len(word)

    return string

print censor("hi bob how are you bob", "bob")

所以在这个节目中,我试图取代" bob"在短语中按照bob这个词的长度来表示星号。但我不确定我在这里做错了什么。相反,我得到的输出是相同的短语。谢谢!

5 个答案:

答案 0 :(得分:3)

使用列表理解:

my_list = ['x' if i % 2 == 0 else i for i in my_list]

是的,这仍然使用循环,但您需要扫描偶数的所有值

答案 1 :(得分:0)

如果你不想要列表理解(如果你想在以后的某个时候进行更精细的替换),你可以循环遍历它并在必要时依次编辑每个值:

for i in range(len(my_list)):
    if not my_list[i] % 2:
        my_list[i] = 'x'

虽然它并不像理解那么干净。

答案 2 :(得分:0)

To"只需完成循环并替换它们",您可以使用:

for index, item in enumerate(my_list):
    if not item % 2:
        my_list[index] = "x"

列表理解更整洁,但会构建一个新列表而不是修改旧列表 - 您需要的将取决于您正在做什么。

答案 3 :(得分:0)

为了提供另一种选择,我们也可以使用map

map(lambda n: 'x' if n%2==0 else n, my_list)

答案 4 :(得分:0)

这是最简洁的:

map(lambda i: 'x' if i % 2 ==0 else i, my_list)

Out [17]:[1,&#39; x&#39;,3,&#39; x&#39;,5,&#39; x&#39;] < / p>