我试图通过阅读论坛来寻找这个问题的解决方案,但是提供的许多解释对我来说太先进了,并且想知道是否有更简单的方法。
所以我的问题是:
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这个词的长度来表示星号。但我不确定我在这里做错了什么。相反,我得到的输出是相同的短语。谢谢!
答案 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>