.Net中有类似zip的方法吗?
在Python中有一个非常简洁的函数,称为zip
,它可以用来同时遍历两个列表:
list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
for v1, v2 in zip(list1, list2):
print v1 + " " + v2
上面的代码应该产生以下结果:
1 a 2 b 3 c
我想知道是否有类似的方法可用。网? 我正在考虑自己写它,但如果它已经可用那就没有意义了。
In Python there is a really neat function called zip
which can be used to iterate through two lists at the same time:
list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
for v1, v2 in zip(list1, list2):
print v1 + " " + v2
The above code should produce the following:
1 a 2 b 3 c
I wonder if there is a method like it available in .Net? I'm thinking about writing it myself, but there is no point if it's already available.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
据我所知没有。 我为自己编写了一个(以及其他一些有用的扩展,并将它们放入一个名为 NExtension 的项目中 显然,
.NET 的并行扩展具有 Zip 功能,
这是 NExtension 的简化版本(但请查看更多有用的扩展方法):
用法:
As far as I know there is not. I wrote one for myself (as well as a few other useful extensions and put them in a project called NExtension on Codeplex.
Apparently the Parallel extensions for .NET have a Zip function.
Here's a simplified version from NExtension (but please check it out for more useful extension methods):
Usage:
不,.NET 中没有这样的功能。 你已经推出了自己的。 请注意,C# 不支持元组,因此也缺少类似 Python 的语法糖。
你可以使用这样的东西:
Nope, there is no such function in .NET. You have roll out your own. Note that C# doesn't support tuples, so python-like syntax sugar is missing too.
You can use something like this:
F# 中还有一个:
There's also one in F#:
更新:它在 C# 4 中内置为 System.Linq.Enumerable.Zip方法
这是一个 C# 3 版本:
删除了 C# 2 版本,因为它已经过时了。
Update: It is built-in in C# 4 as System.Linq.Enumerable.Zip<TFirst, TSecond, TResult> Method
Here is a C# 3 version:
Dropped the C# 2 version as it was showing its age.