相关疑难解决方法(0)

使用列表推导仅仅是副作用是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"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
查看次数

标签 统计

python ×3

list-comprehension ×2

python-3.x ×1