的Python提供了以下語法來初始化功能Python列表:語法在C#功能初始化數組,類似蟒蛇
mylist = [item for item in iterable]
有沒有在C#中類似的語法初始化一個C#列表?
編輯:
我想我應該更具體。我試圖效仿的語法如下:
mylist = [operation(item) for item in iterable]
的Python提供了以下語法來初始化功能Python列表:語法在C#功能初始化數組,類似蟒蛇
mylist = [item for item in iterable]
有沒有在C#中類似的語法初始化一個C#列表?
編輯:
我想我應該更具體。我試圖效仿的語法如下:
mylist = [operation(item) for item in iterable]
假設iterable
是某種類型的IEnumerable<T>
,您可以使用List<T>(IEnumerable<T>)
constructor overload初始化一個新的列表:
mylist = new List(iterable);
您也可以撥打的Linq Enumberable.ToList
extension method:
mylist = iterable.ToList();
的specifica lly,它看起來像是在如何做相當於列表理解之後。您可以使用Linq's Enumerable.Select
method和一個lambda。例如,以匹配您的編輯:
mylist = iterable.Select(item => operation(item)).ToList();
作爲獎勵,如果你試圖做以下(添加條件):
mylist = [operation(item) for item in iterable if item > 42]
你會添加一個調用Enumerable.Where
鏈:
mylist = iterable.Where(item => item > 42).Select(item => operation(item)).ToList();
謝謝!這正是我需要的。 – hlin117
您可以創建項目的C#列表,說整型,在下面的莊園:
List<int> myList = new List<int>{1, 2, 3, 4,};
因此,您不需要指定初始大小,它會從您的初始對象中推斷出它。如果你不是有一個枚舉,請參閱下面
IEnumerable<int> existingEnumerable = ...
List<int> myList = new List<int>(existingEnumerable);
代碼讓我們知道這是否符合您的需求。
iterable.ToList()? –
[列表構造函數(IEnumerable )](http://msdn.microsoft.com/en-us/library/fkbw11z0.aspx)? –
GSerg