代码之家  ›  专栏  ›  技术社区  ›  Alec

相当于java中z中的x,y

  •  0
  • Alec  · 技术社区  · 5 年前

    在python中,可以使用 for x in [a, b, c, d] 用于循环。这可以使用java中的foreach循环进行复制。

    如果我想复制一个 for x, y in z

    for x_off, y_off in ( (1, 2), (-1, 2), (1, -2), (-1, -2), (2, 1), (-2, 1), (2, -1), (-2, -1) ):
        #do something
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   Alec    5 年前

    最后我只对每个索引使用变量。但是对于每个内部数组都有大量计数的2d数组,这是没有用的。

    int[][] offsets = new int[][] { {0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1} };
    
    for(int[] offset: offsets) {
        int x = offset[0], y = offset[1];
        // do something with x and y
    
        2
  •  1
  •   Andreas dfa    5 年前

    您应该创建一个类来存储三个值:

    final class Point3D {
        private final int x, y, z;
        // constructor, getters, and equals/hashCode/toString here
    }
    

    然后可以将数组初始值设定项与增强的for循环一起使用:

    for (Point3D point : new Point3D[] { new Point3D(1, 1, 1), new Point3D(-1, 1, 1),
                                         new Point3D(-1, -1, 1), new Point3D(1, -1, 1) }) {
        // code here
    }
    

    Point3D[] points = {
            new Point3D( 1,  1,  1), new Point3D(-1,  1,  1),
            new Point3D(-1, -1,  1), new Point3D( 1, -1,  1),
            new Point3D( 1,  1, -1), new Point3D(-1,  1, -1),
            new Point3D(-1, -1, -1), new Point3D( 1, -1, -1)
    };
    for (Point3D point : points) {
        // code here
    }