| @@ -168,7 +168,7 @@ namespace Tensorflow | |||||
| { | { | ||||
| var a = t1.AsIterator<T>(); | var a = t1.AsIterator<T>(); | ||||
| var b = t2.AsIterator<T>(); | var b = t2.AsIterator<T>(); | ||||
| while (a.HasNext()) | |||||
| while (a.HasNext() && b.HasNext()) | |||||
| yield return (a.MoveNext(), b.MoveNext()); | yield return (a.MoveNext(), b.MoveNext()); | ||||
| } | } | ||||
| @@ -184,19 +184,14 @@ namespace Tensorflow | |||||
| { | { | ||||
| var a = t1.AsIterator<T1>(); | var a = t1.AsIterator<T1>(); | ||||
| var b = t2.AsIterator<T2>(); | var b = t2.AsIterator<T2>(); | ||||
| while(a.HasNext()) | |||||
| while(a.HasNext() && b.HasNext()) | |||||
| yield return (a.MoveNext(), b.MoveNext()); | yield return (a.MoveNext(), b.MoveNext()); | ||||
| } | } | ||||
| public static IEnumerable<(T1, T2)> zip<T1, T2>(IEnumerable<T1> e1, IEnumerable<T2> e2) | public static IEnumerable<(T1, T2)> zip<T1, T2>(IEnumerable<T1> e1, IEnumerable<T2> e2) | ||||
| { | { | ||||
| var iter2 = e2.GetEnumerator(); | |||||
| foreach (var v1 in e1) | |||||
| { | |||||
| iter2.MoveNext(); | |||||
| var v2 = iter2.Current; | |||||
| foreach (var (v1, v2) in e1.Zip(e2, (t1, t2) => (t1, t2))) | |||||
| yield return (v1, v2); | yield return (v1, v2); | ||||
| } | |||||
| } | } | ||||
| public static IEnumerable<(TKey, TValue)> enumerate<TKey, TValue>(Dictionary<TKey, TValue> values) | public static IEnumerable<(TKey, TValue)> enumerate<TKey, TValue>(Dictionary<TKey, TValue> values) | ||||