【问题标题】:Combine elements of a list [closed]组合列表的元素[关闭]
【发布时间】:2017-02-23 14:29:40
【问题描述】:

我需要一些帮助来组合我的列表中的元素而不重复元素。

来源:

var data = new List<string>();
data.Add("A");
data.Add("B");
data.Add("C");
data.Add("D");

预期结果,元组列表:

List&lt;Tuple&lt;string,string&gt;&gt;

元组(A,B)

元组(A,C)

元组(A,D)

元组(B,C)

元组(B,D)

元组(C,D)

忽略元组:

Tuple(B,A) - 因为列表中有 A,B。

元组(C,A)

元组(C,B)

元组(D,A)

元组(D,B)

元组(D,C)

【问题讨论】:

  • 您在示例中的何处添加元组?
  • 上周我在 JavaScript 中为不同的问题做了同样的事情
  • 为什么不将它包含在您的帖子中。您可以使用帖子下方的edit 按钮添加信息

标签: c# list tuples


【解决方案1】:

你在找这个吗?

 var tupleList = new List<Tuple<string, string>>();
 for (int i = 0; i < data.Count; i++)
 {
     for (int j = i + 1; j < data.Count; j++)
     {
         tupleList.Add(new Tuple<string, string>(data[i], data[j]));
     }
 }

【讨论】:

  • 是的!嵌套循环不好,但工作正常。谢谢
【解决方案2】:

这里有解决方案,但 S&O 不是解决家庭作业的地方(至少展示你解决问题的尝试):

        var data = new List<string>(4) { "A", "B", "C", "D" }; // unique keys
        var tuples = new List<Tuple<string, string>>() { Capacity = data.Count * (data.Count + 1) / 2};
        for (int i = 0; i < data.Count; ++i)
            for (int j = i + 1; j < data.Count; ++j)
                tuples.Add(Tuple.Create(data[i], data[j]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2015-02-17
    • 2019-04-21
    相关资源
    最近更新 更多