返回介绍

修改列表:range

发布于 2024-01-29 22:24:16 字数 940 浏览 0 评论 0 收藏 0

可以使用range和for的组合的常见场合就是在循环中遍历列表时并对其进行修改。例如,假设你因某种理由要为列表中每个元素都加1。你可以通过简单的for循环来做,但可能并不是你想要的。

这样并不行,因为修改的是循环变量x,而不是列表L。其原因有些微妙。每次经过循环时,x会引用已从列表中取出来的下一个整数。例如,第一轮迭代中,x是整数1。下一轮迭代中,循环主体把x设为不同对象,也就是整数2,但是并没有更新1所来自的那个列表。

要真的在我们遍历列表时对其进行修改,我们需要使用索引,让我们可以在遍历时替每个位置赋一个已更新的值。range/len组合可以替我们产生所需要的索引。

以这种方式编写时,随着循环的执行,列表中的内容会改变。没有办法用简单的for x in L:循环做相同的事,因为这种循环会遍历实际的元素,而不是列表的位置。但是,等效的while循环又如何呢?这种循环需要我们多做些工作,并且有可能运行得更慢。

在这里,range的解决方案依然不理想。

这种形式的列表解析表达式也能做类似的工作,而且没有对最初的列表进行在原处的修改(我们可以把表达式的新列表对象赋值给L,但是这样不会更新原始列表的其他任何引用值)。因为这是循环的核心概念,我们将在下一章对列表解析做一个完整的介绍。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文