如何解决如何使用生成器同时创建多个数组?
让我们假设我们有3个数组,索引,a和b。如何仅通过索引一次创建数组c和d?
c = [a[i] for i in index]
d = [b[i] for i in index]
有没有一种方法可以用sigle生成器创建这些数组?
解决方法
您可以使用zip
函数:
c,d = zip(*((a[i],b[i]) for i in index))
如果您想将c
和d
列为列表,则可以使用map
:
c,d = map(list,zip(*((a[i],b[i]) for i in index)))
如果您想要更长的时间(但也许更清晰),则可以构建一个生成器:
def g(a,b,index):
for i in index:
yield a[i],b[i]
c,d = zip(*g(a,index))
,
我将使用带*的元组扩展的zip
c,b[i]) for i in index))
这里使用生成器表达式中的zip来成对地扩展a [i]和b [i]。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。