如何在C#中使用Python的zip?

Jad*_*ias 13 .net c# python linq zip

Python的zip功能执行以下操作:

a = [1, 2, 3]
b = [6, 7, 8]
zipped = zip(a, b)
Run Code Online (Sandbox Code Playgroud)

结果

[[1, 6], [2, 7], [3, 8]]
Run Code Online (Sandbox Code Playgroud)

tan*_*ius 8

怎么样这个

C#4.0 LINQ的新ZIP操作员

public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(
        this IEnumerable<TFirst> first,
        IEnumerable<TSecond> second,
        Func<TFirst, TSecond, TResult> func);
Run Code Online (Sandbox Code Playgroud)

  • 名称相同,但行动完全不同.Linq的Zip()可用于在2个输入序列上产生python-zip效果,但与2个以上的序列无关. (5认同)

Jad*_*ias 6

解决方案2:与C#4.0 Zip类似,但您可以在C#3.0中使用它

    public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(
        this IEnumerable<TFirst> first,
        IEnumerable<TSecond> second,
        Func<TFirst, TSecond, TResult> func)
    {
        using(var enumeratorA = first.GetEnumerator())
        using(var enumeratorB = second.GetEnumerator())
        {
            while (enumeratorA.MoveNext())
            {
                enumeratorB.MoveNext();
                yield return func(enumeratorA.Current, enumeratorB.Current);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 你忘记了处理你的普查员. (6认同)