当前位置: 首页 > 知识库问答 >
问题:

需要一个聪明的方法来创建一个pyplay/pyOpenGL项目的大列表

龚盛
2023-03-14

基本上,我需要这样的行列表:

[0,0]

[1,0],[0,1]

[2,0],[1,1],[0,2]

[3,0],[2,1],[1,2],[0,3]

[4,0],[3,1],[2,2],[1,3],[0,4]

最多可添加任意数量的元素,然后再返回

[4,1],[3,2],[2,3],[1,4]

[4,2],[3,3],[2,4]

[4,3],[3,4]

[4,4]

我只是希望所有这些对都在一个大的列表中,这样我就可以按照上面显示的顺序迭代这些对,进行等距渲染。

输出会像这样

[ [ (0,0) ], [ (1,0),(0,1) ], [ (2,0), (1,1), (0,2) ]....]等

共有2个答案

孟跃
2023-03-14
def create_lists(max_num):
    retlist = []

    for i in range(max_num+1):
        i_list = []
        for j in range(i, -1, -1):
            i_list.append((j, i-j))
        retlist.append(i_list)

    for i in range(1, max_num+1):
        i_list = []
        for j in range(i, max_num+1):
            i_list.append((max_num+i-j, j))
        retlist.append(i_list)

    return retlist
丁阎宝
2023-03-14

还不完全清楚你在寻找什么泛化,但是IIUC有很多方法可以做到这一点。一种是从前面的列表中构建每个子列表(向每个子元素添加一个并避免重复),但另一种是从算术中直接工作:

def sherwood(n):
    N = 2*n+1
    for i in range(N):
        low, high = max(0, i-n), min(i, n)
        w = list(range(low, high+1))
        yield zip(w[::-1], w)

给我

>>> out = list(sherwood(2))
>>> for x in out: print(x)
[(0, 0)]
[(1, 0), (0, 1)]
[(2, 0), (1, 1), (0, 2)]
[(2, 1), (1, 2)]
[(2, 2)]
>>> out = list(sherwood(4))
>>> for x in out: print(x)
[(0, 0)]
[(1, 0), (0, 1)]
[(2, 0), (1, 1), (0, 2)]
[(3, 0), (2, 1), (1, 2), (0, 3)]
[(4, 0), (3, 1), (2, 2), (1, 3), (0, 4)]
[(4, 1), (3, 2), (2, 3), (1, 4)]
[(4, 2), (3, 3), (2, 4)]
[(4, 3), (3, 4)]
[(4, 4)]
 类似资料:
  • 我已经挠头几个小时了,需要一些帮助... 我有3个对象列表。每个列表可以包含相同的对象(但不是必须包含)。我想要一个算法来测试每个列表中是否至少有一个唯一的对象。 编辑:一个项目只能在每个列表中出现一次,但可以出现在多个列表中。 编辑:有一个伪第四个列表-三个列表中各有一个项目。这是必须包含唯一性的列表。每个列表中总共可能有3个项目。这应该返回true,因为第四个列表可能包含unique。 编辑:

  • 首先,打开Android Studio并选择Create new Project,然后它会让你输入一个名字,你可以任意取一个名字,比如:Weather App。然后你需要输入公司域名。如果你不会真正发布这个app,这个字段就不是特别重要了,但是如果你有的话可以使用自己的域名。然后任意选择一个目录作为这个项目的保存地址。 下一步,它会让你选择最小的API版本。我们选择API 15,因为我们有一个库需

  • 如果你已经使用过Android Studio和Gradle,那么这一章会比较简单。我不会给出很多细节和截图,因为用户界面和细节可能会一直变化。 我们的应用是由一个简单的天气app组成,正如所使用的Google’s Beginners Course in Udacity。我们可能会关注不同的事情,但是app的想法都是一样的,你会发现在一个典型的app里面会包括很多不同的东西。如果你的Android开

  • 问题内容: 我有这样的目录/项目设置: Logger 是一个使用Gradle的Android库项目。 MyProject 是一个标准的Android项目项目,需要使用 Logger 库。 我正在使用Android Studio,并尝试将 Logger 添加到外部库中。尽管这在开发期间有效,但我收到有关在构建时找不到该类的消息。 我是Gradle的新手,但在 MyProject的 build.gra

  • 本文向大家介绍使用IDEA创建一个vert.x项目的方法,包括了使用IDEA创建一个vert.x项目的方法的使用技巧和注意事项,需要的朋友参考一下 这里我使用的Gredle 2 选择Gredle 3 修改build文件,添加vert.x 相关的资源 4 开始写代码了 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 如何创建BottomNavigation,其中一项大于父项,但不使用floatingActionButton。比如像这样: 我试着用盒子包裹图标,但它被切割成这样: 然后我尝试分离这个按钮并使用constraintLayout来定位它,但是constraintLayout像这样覆盖了屏幕。甚至当我用颜色给它上色的时候。透明,感觉就像颜色。白色(我不知道为什么颜色。透明对我来说永远不合适)。在这张照