将 Python 移植到 C# - 如何在元组上迭代元组?
Porting, Python to C# - How can I iterate a tuple over a tuple?
我正在将一个 Python 项目移植到 C#。
到目前为止,我已经 运行 解决了这个问题,有什么方法可以将其移植到 C# 吗?
verts = (-1,-1,-1),(1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,1),(1,-1,1),(1,1,1),(-1,1,1)
edges = (0,1),(1,2),(2,3),(3,0),(4,5),(5,6),(6,7),(7,4),(0,4),(1,5),(2,6),(3,7)
for edge in edges:
for x,y,z in (verts[edge[0]],verts[edge[1]]):
[...]
我试过了,
verts.Add(new List<string> { "-1,-1,-1" });
verts.Add(new List<string> { "1,-1,-1" });
verts.Add(new List<string> { "1,1,-1" });
verts.Add(new List<string> { "-1,1,-1" });
verts.Add(new List<string> { "-1,-1,1" });
verts.Add(new List<string> { "1,-1,1" });
verts.Add(new List<string> { "1,1,1" });
verts.Add(new List<string> { "-1,1,1" });
edges.Add(new List<string> { "0,1" });
edges.Add(new List<string> { "1,2" });
edges.Add(new List<string> { "2,3" });
edges.Add(new List<string> { "3,0" });
edges.Add(new List<string> { "4,5" });
edges.Add(new List<string> { "5,6" });
edges.Add(new List<string> { "6,7" });
edges.Add(new List<string> { "7,4" });
edges.Add(new List<string> { "0,4" });
edges.Add(new List<string> { "1,5" });
edges.Add(new List<string> { "2,6" });
edges.Add(new List<string> { "3,7" });
foreach (List<string> vert in verts)
{
[...]
}
List<string> lines1 = new List<string>();
List<string> lines2 = new List<string>();
foreach (List<string> edge in edges)
{
int edge1 = int.Parse(edge[0].Split(',')[0]);
int edge2 = int.Parse(edge[0].Split(',')[1]);
int x;
int y;
int z;
foreach (int vert in verts[edge1])
{
[...]
}
}
所以现在我很困惑,这里有很多错误。
我似乎过于复杂和不切实际。
希望有人能帮助我:)
如果您需要更多信息,请发表评论,如果难以阅读,请再次发表评论。
~酷q
这是您可以采取的一种方式...
var verts = new[]
{
new Tuple<int,int,int> (-1,-1,-1 ),
new Tuple<int,int,int> (1,-1,-1 ),
new Tuple<int,int,int> (1,1,-1 ),
new Tuple<int,int,int> (-1,1,-1 ),
new Tuple<int,int,int> (-1,-1,1 ),
new Tuple<int,int,int> (1,-1,1 ),
new Tuple<int,int,int> (1,1,1 ),
new Tuple<int,int,int> (-1,1,1 )
};
var edges = new[]
{
new Tuple<int,int>(0,1),
new Tuple<int,int>(2,2),
new Tuple<int,int>(2,3),
new Tuple<int,int>(3,0),
new Tuple<int,int>(4,5),
new Tuple<int,int>(5,6),
new Tuple<int,int>(6,7),
new Tuple<int,int>(7,4),
new Tuple<int,int>(0,4),
new Tuple<int,int>(1,5),
new Tuple<int,int>(2,6),
new Tuple<int,int>(3,7)
};
foreach(var edge in edges)
{
var edge1 = edge.Item1;
var edge2 = edge.Item2;
int x, y, z;//not sure why you need these?
foreach(var vert in new[] { verts[edge1].Item1, verts[edge1].Item2, verts[edge1].Item3 })
{
//[...]
}
}
我正在将一个 Python 项目移植到 C#。
到目前为止,我已经 运行 解决了这个问题,有什么方法可以将其移植到 C# 吗?
verts = (-1,-1,-1),(1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,1),(1,-1,1),(1,1,1),(-1,1,1)
edges = (0,1),(1,2),(2,3),(3,0),(4,5),(5,6),(6,7),(7,4),(0,4),(1,5),(2,6),(3,7)
for edge in edges:
for x,y,z in (verts[edge[0]],verts[edge[1]]):
[...]
我试过了,
verts.Add(new List<string> { "-1,-1,-1" });
verts.Add(new List<string> { "1,-1,-1" });
verts.Add(new List<string> { "1,1,-1" });
verts.Add(new List<string> { "-1,1,-1" });
verts.Add(new List<string> { "-1,-1,1" });
verts.Add(new List<string> { "1,-1,1" });
verts.Add(new List<string> { "1,1,1" });
verts.Add(new List<string> { "-1,1,1" });
edges.Add(new List<string> { "0,1" });
edges.Add(new List<string> { "1,2" });
edges.Add(new List<string> { "2,3" });
edges.Add(new List<string> { "3,0" });
edges.Add(new List<string> { "4,5" });
edges.Add(new List<string> { "5,6" });
edges.Add(new List<string> { "6,7" });
edges.Add(new List<string> { "7,4" });
edges.Add(new List<string> { "0,4" });
edges.Add(new List<string> { "1,5" });
edges.Add(new List<string> { "2,6" });
edges.Add(new List<string> { "3,7" });
foreach (List<string> vert in verts)
{
[...]
}
List<string> lines1 = new List<string>();
List<string> lines2 = new List<string>();
foreach (List<string> edge in edges)
{
int edge1 = int.Parse(edge[0].Split(',')[0]);
int edge2 = int.Parse(edge[0].Split(',')[1]);
int x;
int y;
int z;
foreach (int vert in verts[edge1])
{
[...]
}
}
所以现在我很困惑,这里有很多错误。 我似乎过于复杂和不切实际。
希望有人能帮助我:)
如果您需要更多信息,请发表评论,如果难以阅读,请再次发表评论。
~酷q
这是您可以采取的一种方式...
var verts = new[]
{
new Tuple<int,int,int> (-1,-1,-1 ),
new Tuple<int,int,int> (1,-1,-1 ),
new Tuple<int,int,int> (1,1,-1 ),
new Tuple<int,int,int> (-1,1,-1 ),
new Tuple<int,int,int> (-1,-1,1 ),
new Tuple<int,int,int> (1,-1,1 ),
new Tuple<int,int,int> (1,1,1 ),
new Tuple<int,int,int> (-1,1,1 )
};
var edges = new[]
{
new Tuple<int,int>(0,1),
new Tuple<int,int>(2,2),
new Tuple<int,int>(2,3),
new Tuple<int,int>(3,0),
new Tuple<int,int>(4,5),
new Tuple<int,int>(5,6),
new Tuple<int,int>(6,7),
new Tuple<int,int>(7,4),
new Tuple<int,int>(0,4),
new Tuple<int,int>(1,5),
new Tuple<int,int>(2,6),
new Tuple<int,int>(3,7)
};
foreach(var edge in edges)
{
var edge1 = edge.Item1;
var edge2 = edge.Item2;
int x, y, z;//not sure why you need these?
foreach(var vert in new[] { verts[edge1].Item1, verts[edge1].Item2, verts[edge1].Item3 })
{
//[...]
}
}