jmshtqm 发表于 2020-3-26 21:00:26

【python列表】中元素类型为列表时的加法操作

想创建一个4X4的方格,画布大小是512X512,所以每个方格是128X128.

目前碰到的问题是,以pos为第一个格,X方向四个点的坐标增加,Y方向四个点的坐标增加。

但是没有找到合适的方法进行列表类元素的相加。

想请教下大家有什么其他方向或指点?

https://s1.ax1x.com/2020/03/26/GpzdCn.png
import simpleguitk as gui

x = [,,,]
pos_0 =
pos_1 =
pos_2 =
pos_3 =
#X方向位移增加128,直到251;
pos =
#y方向位移增加128,直到251;



def draw(canvas):


    canvas.draw_polygon(pos, 1, 'BLUE', 'TEAL')


stage = gui.create_frame('连连看', 512, 512)
stage.set_draw_handler(draw)

stage.start()

BngThea 发表于 2020-3-26 21:06:18

直接用索引 pos_0 += 128

jmshtqm 发表于 2020-3-26 21:22:44

BngThea 发表于 2020-3-26 21:06
直接用索引 pos_0 += 128

但是我需要的是pos+=128,pos+=128,pos+=128,pos+=128,
如何简洁的把以上结果赋给新的pos,这一点卡住了。

BngThea 发表于 2020-3-26 21:46:15

jmshtqm 发表于 2020-3-26 21:22
但是我需要的是pos+=128,pos+=128,pos+=128,pos+=128,
如何简洁的把以上结果赋 ...

基础方法:用循环
进阶方案:用numpy库,直接支持矩阵加法

jmshtqm 发表于 2020-3-31 19:47:36

BngThea 发表于 2020-3-26 21:46
基础方法:用循环
进阶方案:用numpy库,直接支持矩阵加法

先用基础方法,两层for循环解决。
https://s1.ax1x.com/2020/03/31/GQs2qO.png

def draw(canvas):
       for i in range(4):
            for j in range(4):

                     x1=pos_1+128*i
                     x2 = pos_2 + 128*i
                     x3 = pos_3 + 128*i
                     x4 = pos_4 + 128*i
                     y1 = pos_1 + 128*j
                     y2 = pos_2 + 128*j
                     y3 = pos_3 + 128*j
                     y4 = pos_4 + 128*j

                     canvas.draw_polygon([, , , ], 1, 'blue', 'teal')

BngThea 发表于 2020-3-31 19:48:39

jmshtqm 发表于 2020-3-31 19:47
先用基础方法,两层for循环解决。

可以
页: [1]
查看完整版本: 【python列表】中元素类型为列表时的加法操作