-2

私はpythonで作業しており、自分のコードをc#に実装しています.pythonにはメソッド「製品」があります.c#に似たものがあるかどうかは誰でも知っていますか? そうでない場合、誰かがこの関数を自分で書く方法を教えてくれるでしょうか?

製品の例:

a=[[[(1, 2), (3, 4)], [(5, 6), (7, 8)], [(9, 10), (11, 12)]], [[(13, 14), (15, 16)]]]

b= product(*a)

出力:

([(1, 2), (3, 4)], [(13, 14), (15, 16)])
([(5, 6), (7, 8)], [(13, 14), (15, 16)])
([(9, 10), (11, 12)], [(13, 14), (15, 16)])
4

3 に答える 3

1

あなたがitertools.productを意味すると仮定します(与えられた例からそれのように見えます):

public static List< Tuple<T, T> > Product<T>(List<T> a, List<T> b)
    where T : struct
{
    List<Tuple<T, T>> result = new List<Tuple<T, T>>();

    foreach(T t1 in a)
    {
        foreach(T t2 in b)
            result.Add(Tuple.Create<T, T>(t1, t2));
    }

    return result;
}

structここでnbはT、値型または構造体でなければならないことを意味します。classsなどのオブジェクトをスローする必要がある場合は に変更しますListが、潜在的な参照の問題に注意してください。

次に、ドライバーとして:

List<int> listA = new List<int>() { 1, 2, 3 };
List<int> listB = new List<int>() { 7, 8, 9 };

List<Tuple<int, int>> product = Product<int>(listA, listB);
foreach (Tuple<int, int> tuple in product)
    Console.WriteLine(tuple.Item1 + ", " + tuple.Item2);

出力:

1, 7
1, 8
1, 9
2, 7
2, 8
2, 9
3, 7
3, 8
3, 9
于 2013-05-16T13:37:34.610 に答える
0

多数のリストにわたって有効な製品機能については、ここでCrossProductFunction.CrossProduct私のコードを使用できます。

List<List<Tuple<int>>> a = new List<List<Tuple<int>>> { /*....*/ }
IEnumerable<List<Tuple<int>>> b = CrossProductFunctions.CrossProduct(a)

現在、repeat引数は受け付けていませんitertools.productが、機能とデザインは似ています。

于 2013-12-30T14:55:54.727 に答える