替换python中列表的值

2024-04-27 00:33:37 发布

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

我想做的是将列表中所有的偶数替换为0

list = [1,2,3,4,5]将是list = [1,0,3,0,5]

我想过这样做

list = [1,2,3,4,5]

for i in list:
  if i % 2 == 0:
  # then replace the even numbers with 0 

问题是我不知道如何编写下一行代码


Tags: the代码in列表forifwithreplace
3条回答

您可以使用如下列表理解来完成此操作:

list = [x * (x%2) for x in list]
print list

请注意,x%2只能产生1或0。因此,如果这个数是偶数,那么乘法的结果是0;如果是奇数,那么它就是这个数本身。在

Demo

>>> my_list = [1,2,3,4,5]
>>> def myfun(x):
    if x % 2 != 0:
        return x
    else:
        return 0


>>> list(map(myfun, my_list))
[1, 0, 3, 0, 5]

问题是如果你这样开始

for i in lst: 
    if i %2 == 0:
         # don't know the index of i

但是,您可以使用enumerate来跟踪索引-现在很容易了

^{pr2}$

通常使用列表理解并用新的列表替换整个列表会更简单。在

您可以使用按位和&测试每个数字的最低位

>>> L = [1, 2, 3, 4, 5] 
>>> L = [x if x & 1 else 0 for x in L]
>>> L
[1, 0, 3, 0, 5]

根据您的CPU和Python实现,您可能会发现这更快(但在我看来可读性较差):

[x * (x & 1) for x in L]

相关问题 更多 >