gpt4 book ai didi

Python 代码结构和约定 - 使用循环为列表创建元素

转载 作者:行者123 更新时间:2023-11-30 23:21:56 25 4
gpt4 key购买 nike

我一直在 python-guide.org 上阅读一些文章,并重新审视我的一些代码以清理它并养成良好的习惯。在我的一个程序中,我想生成用户定义的范围内的奇数列表:

i = 3
while i <= limit:
#Test whether the number is odd by checking remainder is not 0
if i % 2 != 0:
integers.append(i)
i += 1

在 python-guide 的一篇文章中,作者说这不是为列表创建元素的最佳方式(它被归类为不好),因此通过扩展所提供的好示例,我想出了这个:

integers = [int(n) for n in range(2, limit + 1) if (n is 2) or (n % 2 != 0)]

它们都产生相同的输出,但是第二个例子会被归类为有点疯狂吗?一份声明中是否包含太多内容?

谢谢你的想法,皮特

最佳答案

此列表理解:

integers = [int(n) for n in range(2, limit + 1) if (n is 2) or (n % 2 != 0)]

可以进一步简化:

integers = [2] + [n for n in range(3, limit+1) if n % 2]

说明:

  • 您不需要将 n 转换为 int,它已经是一个整数
  • 您应该使用 == 来比较数字是否相等,而不是 is。无论如何,最好将该条件从循环中取出,在整个迭代中它仅一次为真。我宁愿在开头附加数字 2
  • 作为条件的表达式 n % 2 != 0 等价于 n % 2,因为在 Python 中 0 被认为是假的,并且任何其他非零值都是真实的

或者,您可以就地修改列表以在开头添加缺少的数字(这应该更有效):

integers = [n for n in range(3, limit+1) if n % 2]
integers.insert(0, 2)

不,这不会被归类为坚果。这是在 Python 中创建列表的惯用方法,它甚至比编写显式循环更快(性能方面)。

关于Python 代码结构和约定 - 使用循环为列表创建元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24744515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com