Python.NET - 将 Python 列表转换为 .NET 列表 (C#)
Python.NET - convert Python List to .NET List (C#)
我正在使用 Python.NET 在 C# 中导入一个 python 列表(字符串),但我找不到任何从 Python.NET 动态对象到 C# 列表(所有那里的例子似乎与 C# 的方向相反 Python).
我尝试使用 (List<string>)
和 Enumerable.ToList<string>()
转换动态 python.net 对象,但都失败了。 as
运算符返回空值。唯一有效的方法是用 foreach
遍历它...但这真的是唯一的方法和最好的解决方案吗?
代码如下:
using (Py.GIL())
{
dynamic MyPythonClass = Py.Import("MyPythonClass")
dynamic pyList = MyPythonClass.MyList;
//List<string> mylist = (List<string>)pyList; //failed
//List<string> mylist = Enumerable.ToList<string>(pyList); //failed
//List<string> mylist = pyList as List<string>; //returns null
List<string> mylist = new List<string>();
foreach(string item in pyList)
{
mylist.Add(item); //Success !
}
}
答案(可耻地)非常简单,感谢@Dave:
string[] mylist = (string[])pyList;
//or
List<string> mylist = ((string[])pyList).ToList<string>();
我正在使用 Python.NET 在 C# 中导入一个 python 列表(字符串),但我找不到任何从 Python.NET 动态对象到 C# 列表(所有那里的例子似乎与 C# 的方向相反 Python).
我尝试使用 (List<string>)
和 Enumerable.ToList<string>()
转换动态 python.net 对象,但都失败了。 as
运算符返回空值。唯一有效的方法是用 foreach
遍历它...但这真的是唯一的方法和最好的解决方案吗?
代码如下:
using (Py.GIL())
{
dynamic MyPythonClass = Py.Import("MyPythonClass")
dynamic pyList = MyPythonClass.MyList;
//List<string> mylist = (List<string>)pyList; //failed
//List<string> mylist = Enumerable.ToList<string>(pyList); //failed
//List<string> mylist = pyList as List<string>; //returns null
List<string> mylist = new List<string>();
foreach(string item in pyList)
{
mylist.Add(item); //Success !
}
}
答案(可耻地)非常简单,感谢@Dave:
string[] mylist = (string[])pyList;
//or
List<string> mylist = ((string[])pyList).ToList<string>();