【发布时间】:2020-04-19 07:16:28
【问题描述】:
对所有人来说, 我正在对列表理解语法的使用进行一些搜索。我想看看是否可以使用 1 行代码从 2 个现有列表中返回 2 个列表,即使用列表理解。我偶然发现了这个帖子 Possible to return two lists from a list comprehension? 这让我觉得这是可能的。独立创建新列表效果很好我想看看我能走多远,即最少的代码但仍然易于阅读
考虑以下我有 2 个预先存在的列表 wnv 和 wdv,并希望创建 2 个新列表 Av 和 Bv,如下所示;
Av,Bv=[(zeta*wn*dt,wd*dt) for i,(wn,wd) in zip(wnv,wdv)]
其中 zeta 和 dt 只是一个数字 这可以做到吗?使用上面的代码,我得到了错误:unpack non-iterable float object
【问题讨论】:
-
您能否展示
wnv、wdv的结构以及在没有列表理解的情况下您是如何做到的? -
两个列表的长度是否相同?如果列表的长度不同,您希望发生什么?
-
您分享的链接不是完全回答了您的问题吗?
-
1.现在我看到在行首添加了 zip() 链接是有意义的。 2. 列表将始终与它们从 1 个列表中“发出”的长度相同。 3. 我在“主”列表上有 For ... 循环,在其中我即时计算了一些变量,然后我使用列表理解方法测试了每个所需列表的 1 行代码,最后意识到也许我可以创建一些列表使用 1 行代码。我没有测试过“1-line”方法是否真的更快