|
|
1
29
基本上它只是映射,但没有返回结果。通过使用函数,您将确保“item”变量不会泄漏到当前范围中。 |
|
|
2
14
|
|
|
3
9
您可以使用内置的
我发现这是你想要实现的最简洁的idom。
|
|
4
6
每一个表达式的计算结果都是某个东西,所以无论采用何种方式,都会得到一个结果。任何这样返回的对象(就像您的列表)都将在之后被丢弃,因为不再有对它的引用。 澄清一下:python中很少有语句不返回任何内容。甚至像这样的函数调用
|
|
5
6
你可以试试这个:
或者你也可以直接放下枪
|
|
|
6
3
您可以使用一个过滤器和一个不返回真值的函数。您将得到一个空的返回列表,因为filter只添加计算结果为true的值,我想这将为您节省一些内存。大概是这样的:
|
|
|
7
3
我忍不住把它作为单独的答案贴出来
只有twist是installWow应该返回自身,例如。
|
|
|
8
3
如果可以分发wowList
如果您确实想维护wowList
如果秩序重要呢
虽然作为谜题的答案,我喜欢第一个:) |
|
|
9
2
我测试了几种不同的变体,下面是我得到的结果。 Python 2:
Python 3:
请注意,时间值没有那么精确(例如,前三个选项的相对性能因运行而异)。我的结论是,您应该只使用一个循环,它更具可读性,并且至少与其他方法一样好。如果要避免污染名称空间,只需
|
|
|
10
1
首先将for循环重写为生成器表达式,该表达式不分配任何内存。
但是,如果没有找到某种方法来使用它,这个表达式实际上不会做任何事情。所以我们可以重写它来产生一些确定的结果,而不是依赖于可能的结果
它方便地返回wowList中受影响的项目数。 |
|
|
11
1
只需将installWow设置为return None或将最后一条语句设置为pass,如下所示:
并使用以下命令:
|
|
|
12
1
如果您担心需要控制返回值(您需要这样做才能使用 滤器 )并且更喜欢一个比 减少 直接地您的函数将需要额外的第一个参数,但您可以忽略它,或使用lambda放弃它:
|
|
|
13
1
让我先说一句,原来的海报似乎更关注名称空间的混乱,而不是其他任何东西。在这种情况下,您可以将工作变量包装在单独的函数名称空间中,并在声明后调用它,或者在将它们与“del”内置命令一起使用后,只需将它们从名称空间中删除即可。或者,如果有多个变量需要清理,则使用其中的所有临时变量定义函数,运行它,然后删除它。 如果主要问题是优化,请继续阅读: 还有三种方式,可能比这里描述的其他方式更快:
但这里真正的问题是函数返回某些内容,而您不希望它返回任何内容。。所以要解决这个问题,你有两个选择。一种是重构代码,以便installWow接收wowList并在内部对其进行迭代。另一种方法相当令人兴奋,但您可以将installWow()函数加载到编译的ast中,如下所示:
exec on the ast 并提供一个包含正确变量的名称空间字典。为了确保树修改是正确的,您可以通过运行 astunparse .
|
|
|
14
1
一个简单的DIY,其唯一目的是通过生成器表达式循环:
然后使用:
|
|
|
15
0
有人需要回答--
这里更具python风格的方法是不用担心污染名称空间,并使用
然后
|