当前位置: 首页 > 面试题库 >

使用Python替换列表中的值

长孙嘉容
2023-03-14
问题内容

我有一个列表,我想用condition()返回True的None替换值。

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

例如,如果条件检查bool(item%2)应该返回:

[None, 1, None, 3, None, 5, None, 7, None, 9, None]

最有效的方法是什么?


问题答案:

使用列表理解来构建新列表:

new_items = [x if x % 2 else None for x in items]

您可以根据需要修改原始列表,但实际上并不能节省时间:

items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for index, item in enumerate(items):
    if not (item % 2):
        items[index] = None

以下是(Python 3.6.3)演示非节省时间的时间:

In [1]: %%timeit
   ...: items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
   ...: for index, item in enumerate(items):
   ...:     if not (item % 2):
   ...:         items[index] = None
   ...:
1.06 µs ± 33.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [2]: %%timeit
   ...: items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
   ...: new_items = [x if x % 2 else None for x in items]
   ...:
891 ns ± 13.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

和Python 2.7.6计时:

In [1]: %%timeit
   ...: items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
   ...: for index, item in enumerate(items):
   ...:     if not (item % 2):
   ...:         items[index] = None
   ...: 
1000000 loops, best of 3: 1.27 µs per loop
In [2]: %%timeit
   ...: items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
   ...: new_items = [x if x % 2 else None for x in items]
   ...: 
1000000 loops, best of 3: 1.14 µs per loop


 类似资料:
  • 问题内容: 我想用另一个子列表替换list中的一个子列表。像这样: 可以说我想要一个像这样的子列表: 并替换为 所以最终结果将是 有什么建议? 问题答案: 希望能有所帮助

  • 问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是:

  • 问题内容: 我正在尝试替换文件列表中的部分文件扩展名。我希望能够遍历项目(文件)并删除扩展名。我不知道当re.sub作为第三个参数需要一个字符串时,如何适当地遍历列表中的项目。例如。re.sub(pattern,repl,string,count = 0,标志= 0) 这里出现的问题是re.sub需要一个字符串,而我希望它在字符串列表中循环。 感谢您的任何建议! 问题答案: 您可以使用列表推导来使

  • 问题内容: 我必须搜索一个列表,然后用一个元素替换所有出现的元素。到目前为止,我在代码方面的尝试使我无处可寻,做到这一点的最佳方法是什么? 例如,假设我的列表具有以下整数 我需要将所有出现的数字1替换为值10,所以我需要的输出是 因此,我的目标是将数字1的所有实例替换为数字10。 问题答案:

  • 无法在表列中发送值。当我试图使用Selenium在列中插入值时,我得到了不同的错误。 > 然后单击并编辑该值。 传递的值未插入表列中。但是我可以单击Tables列。我的考试通过了。 然后尝试设置值。它显示超时的错误。 我再次使用div/span组合作为XPath,并编辑了该值。但这并没有反映在表中。 在这里我没有得到任何错误。但保存后未反映该值。 我给元素添加了各种格式。 div/[id] HTM

  • 在索引位置1的输入中遇到的字符串的前半部分将被替换为字符“-”使用流我们如何执行操作? 我有上面的列表,我想用我这样做的循环将每个嵌套列表值的第一个位置替换为“-” 样本输出:[[0,-],[6,-],[0,-],[6,gh],[4,ij],[0,ab],[6,cd]] 但是任何人都可以解释如何使用流来实现同样的目标