【问题标题】:Can I initialize a list from an expression in a simple way, similar to Python?我可以用类似于 Python 的简单方式从表达式初始化列表吗?
【发布时间】:2022-11-16 00:26:15
【问题描述】:

假设我有一个返回对象的函数:

public object toto() {}

或者在 python 中:

def toto():
    return "something"

我想以一种非常简单的方式初始化 n 元素列表,在 Python 中我会这样做:

l = [toto() for i in range(1, n+1)]

在 C# 中是否有一种简单、类似的方法来避免循环?

谢谢 !

【问题讨论】:

  • 你到底想返回什么?在 C# 中,您应该避免使用 object
  • “避免循环”是指不自己编写循环吗?因为在引擎盖下它总是会有一个循环。
  • 仅供参考,python 中的列表理解不会“避免循环”。循环就在那里供您查看:for i in ...。列表理解很简单语法糖for 一个循环,其唯一的工作就是建立一个列表。

标签: c# arrays list initialization


【解决方案1】:

你可以使用Enumerable.Range

var l = Enumerable.Range(0, n + 1).Select(i => "something" + i);

如果你想“消费”它,你可以使用foreach

foreach(string s in l)
{
    Console.WriteLine(s);
}

或创建一个新的List<string>string[]

List<string> stringList = l.ToList();
string[] stringArray = l.ToArray();

课程的那个也使用循环,只是你看不到它。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2021-06-23
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多