python - 是否可以在列表理解中创建和引用对象?

标签 python python-2.7 list-comprehension

我有一个 url 列表,我想要这些网址。

urls = ["http://server1:53000/cgi-bin/mapserv?map=../maps/Weather.wms.map", 
        "http://server2:53000/cgi-bin/mapserv?map=../maps/Weather.wms.map"]

我通常会这样写:

servers = []
for url in urls:
    o = urlparse(url)
    servers.append(o.netloc)

然后我立即想到,“我应该把它变成一个理解”并继续写这个(这当然行不通):

servers = [o.netloc() for urlparse(url) as o in urls]

python 有办法做这种复杂的理解吗? (也许在 3.x 中?)

在更学术的层面上,进行这种复杂的理解会不会离“pythonic”太远?这对我来说似乎相对直观,但我以前完全不了解这些事情。

最佳答案

不需要给中间名赋值,直接访问urlparse()返回值的.netloc属性即可:

servers = [urlparse(url).netloc for url in urls]

以这种方式完成它是一件完美的 pythonic 事情。

关于python - 是否可以在列表理解中创建和引用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38850748/

相关文章:

Python PIP 安装抛出 TypeError : unsupported operand type(s) for -=: 'Retry' and 'int'

python-2.7 - SQLAlchemy的安装未链接到Flask

list - erlang列表理解问题

python - Numpy 中每一行的 `vectorize`

c# - 如何在 Python 中将所有方法调用委托(delegate)给 C# DLL

python - 总是指向其他属性的功能

python - 按下 "Enter"后 PyQt QItemDelegate setFocus 到 QTableWidget

python - 使 Tkinter.Listbox 选择持久化

python - 有条件地附加列表的最佳 Pythonic 方式

f# - F# 中带有浮点迭代器的列表推导式