首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表操作,跟踪旧列表

列表操作,跟踪旧列表
EN

Stack Overflow用户
提问于 2020-05-17 03:01:17
回答 3查看 56关注 0票数 1

在对列表应用操作后,我希望同时访问修改后的列表和原始列表。不知何故,我做不到。

在下面的代码片段中,我定义了两个用来修改原始列表的函数。然后,我从一个类中获取值并应用转换。

代码语言:javascript
运行
复制
def get_min_by_col(li, col):                          # get minimum from list
    return min(li, key=lambda x: x[col - 1])[col - 1]

def hashCluster(coords):                              # transform to origin
    min_row = get_min_by_col(coords,0)
    min_col = get_min_by_col(coords,1)
    for pix in coords:
        pix[1] = pix[1] - min_row
        pix[0] = pix[0] - min_col
    return (coords)


pixCoords = hashCoords = originalPixCoords = []       # making sure they are empty
for j in dm.getPixelsForCluster(dm.clusters[i]):
    pixCoords.append([j['m_column'], j['m_row']])     # getting some values from a class -- ex:   [[613, 265], [613, 266]]   or    [[615, 341], [615, 342], [616, 341], [616, 342]] 
originalPixCoords = pixCoords.copy()                  # just to be safe, I make a copy of the original list
print ('Original : ', originalPixCoords)              
hashCoords = hashCluster(pixCoords)                   # apply transformation
print ('Modified : ', hashCoords)
print ('Original : ', originalPixCoords)              # should get the original list

Jupyter Notebook的一些结果:

代码语言:javascript
运行
复制
Original :  [[607, 268]]
Modified :  [[0, 0]]
Original :  [[0, 0]]

Original :  [[602, 264], [603, 264]]
Modified :  [[0, 0], [1, 0]]
Original :  [[0, 0], [1, 0]]

Original :  [[613, 265], [613, 266]]
Modified :  [[0, 0], [0, 1]]
Original :  [[0, 0], [0, 1]]

函数hashCluster是否也可以修改新列表?即使在.copy()之后

我做错了什么?我的目标是通过尽可能少的操作和列表副本访问原始列表和修改后的列表(因为我遍历的是一个非常大的文档)。

EN

Stack Overflow用户

发布于 2020-05-17 03:14:12

使用

代码语言:javascript
运行
复制
import copy
OriginalPixCoords= copy.deepcopy(pixCoords)
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61842121

复制
相关文章

相似问题

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