首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将要数组的项按其名称附加到for循环并在函数中设置格式。

将要数组的项按其名称附加到for循环并在函数中设置格式。
EN

Stack Overflow用户
提问于 2021-12-08 08:46:48
回答 2查看 110关注 0票数 0

我试图将项目添加到数组中,并以它们的名称命名。这是我的代码:

代码语言:javascript
复制
def create_filters(_shapes):
"""create masked filters to use on the image."""
  row, col = _shapes
  row, col  = int(row/2), int(col/2)
  urow, drow = row+10, row-10
  ucol, dcol = col+10, col-10

  masks = []
  mask1 = np.ones(_shapes, np.uint16)
  mask1[:,dcol:ucol] = 0
  # masks.append(mask1)
  mask2 = np.ones(_shapes, np.uint16)
  mask2[drow:urow,:] = 0
  # masks.append(mask2)
  mask3 = cv.bitwise_not(mask1)
  # masks.append(mask3)
  mask4 = cv.bitwise_not(mask2)
  # masks.append(mask4)
  mask5 = np.zeros(_shapes, np.uint16)
  mask5[drow:urow,dcol:ucol] = 255
  # masks.append(mask5)
  mask6 = cv.bitwise_not(mask5)
  # masks.append(mask6)
  mask7 = np.copy(mask1)
  mask7[drow:urow,:] = 0
  # masks.append(mask7)
  mask8 = cv.bitwise_not(mask7) 
  # masks.append(mask8)

  for i in range(1,9):
      m = globals()[f'mask{i}']
      masks.append(m)

  return masks

所以基本上我想把所有的面具1-8附加到面具上。现在,由于mask1 1-8是局部变量,所以我不能使用全局()。有更好的方法吗?我知道我可以像这样初始化数组:

代码语言:javascript
复制
masks=[mask1, mask2,...]

但我特别要求在for循环中使用字符串作为变量名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-08 08:58:27

有几种方法可以解决这个问题,但是要解决你的具体问题:

根据我的评论,您可以简单地使用locals()代替globals()

票数 2
EN

Stack Overflow用户

发布于 2021-12-08 09:50:28

另一种选择是使用eval i.e:

代码语言:javascript
复制
for i in range(1,9):
    m = eval(f"mask{i}")
    masks.append(m)

eval函数使用全局和本地名称空间分析和计算任何python表达式。有关eval的更多信息,请参见python文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70272148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档