鱼C论坛

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

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

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

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

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

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

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

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

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


                               
登录/注册后可看大图

  1. [code]import simpleguitk as gui

  2. x = [[128,0],[128,0],[128,0],[128,0]]
  3. pos_0 = [0, 0]
  4. pos_1 = [128, 0]
  5. pos_2 = [128, 128]
  6. pos_3 = [0, 128]
  7. #X方向位移增加128,直到251;
  8. pos = [pos_0, pos_1, pos_2, pos_3]
  9. #y方向位移增加128,直到251;



  10. def draw(canvas):
  11.   

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


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

  15. 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库,直接支持矩阵加法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 21:06:18 | 显示全部楼层
直接用索引 pos_0[0] += 128
小甲鱼最新课程 -> https://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,这一点卡住了。
小甲鱼最新课程 -> https://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库,直接支持矩阵加法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

                               
登录/注册后可看大图


  1. def draw(canvas):
  2.        for i in range(4):
  3.               for j in range(4):

  4.                      x1=pos_1[0]+128*i
  5.                      x2 = pos_2[0] + 128*i
  6.                      x3 = pos_3[0] + 128*i
  7.                      x4 = pos_4[0] + 128*i
  8.                      y1 = pos_1[1] + 128*j
  9.                      y2 = pos_2[1] + 128*j
  10.                      y3 = pos_3[1] + 128*j
  11.                      y4 = pos_4[1] + 128*j

  12.                      canvas.draw_polygon([[x1, y1], [x2, y2], [x3, y3], [x4, y4]], 1, 'blue', 'teal')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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