Python 中多变量迭代的 C# 模拟?

发布于 2024-10-17 03:37:57 字数 511 浏览 1 评论 0原文

在 Python 中,我们可以像这样同时迭代多个变量:

my_list = [[1, 2, 3], [4, 5, 6]]

for a, b, c in my_list:
    pass

是否有比这更接近的 C# 模拟?

List<List<int>> myList = new List<List<int>> {
    new List<int> { 1, 2, 3 },
    new List<int> { 4, 5, 6 }
};

foreach (List<int> subitem in myList) {
    int a = subitem[0];
    int b = subitem[1];
    int c = subitem[2];
    continue;
}

编辑 - 只是为了澄清,所讨论的确切代码必须为 C# 示例中的每个索引分配一个名称。

In Python one can iterate over multiple variables simultaneously like this:

my_list = [[1, 2, 3], [4, 5, 6]]

for a, b, c in my_list:
    pass

Is there a C# analog closer than this?

List<List<int>> myList = new List<List<int>> {
    new List<int> { 1, 2, 3 },
    new List<int> { 4, 5, 6 }
};

foreach (List<int> subitem in myList) {
    int a = subitem[0];
    int b = subitem[1];
    int c = subitem[2];
    continue;
}

Edit - Just to clarify, the exact code in question was having to assign a name to each index in the C# example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

秋意浓 2024-10-24 03:37:57

与你所拥有的并没有太大不同,但是这个怎么样?

foreach (var subitem in myList.Select(si => new {a = si[0], b = si[1], c = si[2]})
{
                int a = subitem.a;
                int b = subitem.b;
                int c = subitem.c;
                continue;
}

Not too different from what you have but how about this ?

foreach (var subitem in myList.Select(si => new {a = si[0], b = si[1], c = si[2]})
{
                int a = subitem.a;
                int b = subitem.b;
                int c = subitem.c;
                continue;
}
紅太極 2024-10-24 03:37:57

你可以尝试这样的事情:

var myList = new[] {Tuple.Create(1, 2, 3), Tuple.Create(4, 5, 6)};
foreach (var tuple in myList)
{
    //your code
}

You can try something like this:

var myList = new[] {Tuple.Create(1, 2, 3), Tuple.Create(4, 5, 6)};
foreach (var tuple in myList)
{
    //your code
}
无所的.畏惧 2024-10-24 03:37:57

C# 没有为此提供特殊的构造,并且

a, b = 1, 2

在 C# 中也不可能进行多重赋值。

您还应该注意,列表列表并不是真正的 C# 风格。您通常会创建一个具有 abc 属性的类,并始终保留这些属性的列表。

C# does not have special constructs for this, and not for multiple assignments either

a, b = 1, 2

is not possible in c#.

You should also note that lists of lists are not really c# style. You typically create a class with a, b and c properties and keep a list of those all the way through.

满意归宿 2024-10-24 03:37:57

您可以创建使用 lambda 表达式可以执行此操作的 out 扩展方法。

但最后会是这样的:

for(int i = 0; i < tab.length; i++){
int a = tab[0];
int b = 选项卡[1];
int c = tab[2];

只是代码“糖”,恕我直言,不应在共享代码中使用。

You can create your out extension method that using lambda expression can do this.

But at the end it will be something like:

for(int i = 0; i < tab.length; i++){
int a = tab[0];
int b = tab[1];
int c = tab[2];
}

This is only code "sugar", that IMHO should be not used in shared code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文