鱼C论坛

 找回密码
 立即注册
查看: 2296|回复: 5

[已解决]【python列表】中元素类型为列表时的加法操作

[复制链接]
发表于 2020-3-26 21:00:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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


                               
登录/注册后可看大图
[code]import simpleguitk as gui

x = [[128,0],[128,0],[128,0],[128,0]]
pos_0 = [0, 0]
pos_1 = [128, 0]
pos_2 = [128, 128]
pos_3 = [0, 128]
#X方向位移增加128,直到251;
pos = [pos_0, pos_1, pos_2, pos_3]
#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()
[/code]
最佳答案
2020-3-26 21:46:15
jmshtqm 发表于 2020-3-26 21:22
但是我需要的是pos[0][0]+=128,pos[1][0]+=128,pos[2][0]+=128,pos[3][0]+=128,
如何简洁的把以上结果赋 ...

基础方法:用循环
进阶方案:用numpy库,直接支持矩阵加法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 21:06:18 | 显示全部楼层
直接用索引 pos_0[0] += 128
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 21:22:44 | 显示全部楼层
BngThea 发表于 2020-3-26 21:06
直接用索引 pos_0[0] += 128

但是我需要的是pos[0][0]+=128,pos[1][0]+=128,pos[2][0]+=128,pos[3][0]+=128,
如何简洁的把以上结果赋给新的pos,这一点卡住了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 21:46:15 | 显示全部楼层    本楼为最佳答案   
jmshtqm 发表于 2020-3-26 21:22
但是我需要的是pos[0][0]+=128,pos[1][0]+=128,pos[2][0]+=128,pos[3][0]+=128,
如何简洁的把以上结果赋 ...

基础方法:用循环
进阶方案:用numpy库,直接支持矩阵加法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 19:47:36 | 显示全部楼层
BngThea 发表于 2020-3-26 21:46
基础方法:用循环
进阶方案:用numpy库,直接支持矩阵加法

先用基础方法,两层for循环解决。

                               
登录/注册后可看大图

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

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

                     canvas.draw_polygon([[x1, y1], [x2, y2], [x3, y3], [x4, y4]], 1, 'blue', 'teal')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 19:48:39 | 显示全部楼层
jmshtqm 发表于 2020-3-31 19:47
先用基础方法,两层for循环解决。

可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 01:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表