相关疑难解决方法(0)

如何从Python字典中删除密钥?

当我试图从字典中删除一个键时,我写道:

if 'key' in myDict:
    del myDict['key']
Run Code Online (Sandbox Code Playgroud)

有这样一种方式吗?

python dictionary unset data-structures

1539
推荐指数
12
解决办法
129万
查看次数

使用列表推导仅仅是副作用是Pythonic吗?

想想我正在调用它的副作用的函数,而不是返回值(比如打印到屏幕,更新GUI,打印到文件等).

def fun_with_side_effects(x):
    ...side effects...
    return y
Run Code Online (Sandbox Code Playgroud)

现在,是Pythonic使用列表推导来调用这个函数:

[fun_with_side_effects(x) for x in y if (...conditions...)]
Run Code Online (Sandbox Code Playgroud)

请注意,我不会将列表保存在任何位置

或者我应该像这样调用这个函数:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)
Run Code Online (Sandbox Code Playgroud)

哪个更好?为什么?

python list-comprehension

97
推荐指数
4
解决办法
8534
查看次数

python - 没有赋值的列表理解

今天我正在解析一个目录索引,其中包含使用BeautifulSoup压缩文件的路径列表,并且遇到了一件有趣的事情.让我们假设我想获取href我得到的标签的所有属性并将它们直接放入队列中:

q = Queue.Queue()
[q.put(tag['href']) for tag in soup.findAll('a')]
Run Code Online (Sandbox Code Playgroud)

我从来没有碰到这样的情况,在此之前可以使用内联而不将其分配给任何东西,只是通过一些例程调用生成另一个迭代器.这被认为是不好的做法吗?它本身就是"pythonic"吗?是否有更好的单行将所有项目放入队列?

python list-comprehension

12
推荐指数
3
解决办法
6556
查看次数

在Python中,有没有办法在迭代的每个项目上调用方法?

可能重复:
在python中是否有没有结果的地图?

当我想快速/有效地在迭代所包含的每个项目上调用就地方法时,我经常会遇到程序中的情况.(很快意味着for循环的开销是不可接受的).当我想调用draw()每个Sprite对象时,一个很好的例子是精灵列表.

我知道我可以这样做:

[sprite.draw() for sprite in sprite_list]

但我觉得列表理解被滥用,因为我没有使用返回的列表.这同样适用于该map功能.石头我过早优化,但我也不希望返回值的开销.

我想知道的是,如果在Python中有一个方法可以让我做我刚才解释的方法,也许就像我在下面建议的假设函数:

do_all(sprite_list, draw)

python iteration methods premature-optimization

3
推荐指数
2
解决办法
1万
查看次数

python映射中的副作用(python"do"块)

什么是告诉某人"我想要应用于func每个元素iterable的副作用" 的首选方式.

# Option 1... clear, but two lines.
for element in iterable:
    func(element)

# Option 2... even more lines, but could be clearer.
def walk_for_side_effects(iterable):
    for element in iterable:
        pass

walk_for_side_effects(map(func, iterable))  # Assuming Python3's map.

# Option 3... builds up a list, but this how I see everyone doing it.
[func(element) for element in iterable]
Run Code Online (Sandbox Code Playgroud)

我喜欢选项2; 标准库中是否有一个已经等效的函数?

python python-3.x

2
推荐指数
1
解决办法
2108
查看次数