相关疑难解决方法(0)

pythonic方式做N次而没有索引变量?

每天我都越来越喜欢python.

今天,我写了一些代码,如:

for i in xrange(N):
    do_something()
Run Code Online (Sandbox Code Playgroud)

我不得不做N次.但每次都不依赖于i(索引变量)的值.我意识到我正在创建一个我从未使用过的变量(i),并且我认为"在没有这个无用的索引变量的情况下,确实存在更多的pythonic方式."

所以......问题是:你知道如何以更多(pythonic)美丽的方式完成这个简单的任务吗?

python for-loop coding-style

144
推荐指数
7
解决办法
9万
查看次数

我发现自己摆动了列表理解锤

......每个for-loop看起来都像列表理解.

代替:

for stuff in all_stuff:
    do(stuff)
Run Code Online (Sandbox Code Playgroud)

我在做(没有将列表分配给任何东西):

[ do(stuff) for stuff in all_stuff ]
Run Code Online (Sandbox Code Playgroud)

这是list-comp方法的常见模式.1)好的,没什么大不了的?错误. 2) 这不能只是代码风格吗?超级错了.

1)是的,这是错的.正如NiklasB所指出的那样,HowTos的目标是建立一个新的列表.

2)也许,但它不明显和明确,所以最好不要使用它.

我没有记住那些操作方法基本上是基于命令行的.在我的团队向我大吼之后,想知道为什么我要建立大量的列表然后让它们离开,我突然意识到我可能会引入一个与内存相关的重大错误.

所以这是我的问题.如果我是在一个长时间运行的过程中这样做的,那里正在消耗大量数据,那么这个"列表"会继续消耗我的内存直到放手吗?垃圾收集器什么时候会回忆起内存?内置此列表之后是​​否已丢失?

我的猜测是肯定的,它会继续消耗我的记忆力.我不知道python垃圾收集器是如何工作的,但我冒昧地说这个列表将存在,直到next调用最后一个all_stuff.

编辑.

我的问题的实质是更清洁的中继在这个问题 (感谢链接尼克拉斯)

python list-comprehension

8
推荐指数
1
解决办法
313
查看次数