找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2483|回复: 2

[讨论] list的copy方法,数据依然被改变

3

主题

7

帖子

7

积分

贫民

积分
7
QQ
ZhuYajun 发表于 2019-4-8 11:44:00 | 显示全部楼层 |阅读模式
本帖最后由 ZhuYajun 于 2019-4-8 12:16 编辑


my_DT_list = [
    ['M_ST-NamePF','M     0.0','BOOL','Profilfrei'],
    ['M_ST-NamePF_1','M     0.1','BOOL','Profilfrei Hifu'],
    ['M_ST-NameK10','M     1.0','BOOL','Drehtisch Grundstellung'],
    ['M_ST-NameK10_1','M     1.1','BOOL','Drehtisch Grundstellung Hifu'],
    ['M_ST-NameAE1Ver1','M     2.0','BOOL','Drehtisch Verriegelung Hifu 1'],
    ['M_ST-NameAE1Ver2','M     2.1','BOOL','Drehtisch Verriegelung Hifu 2'],
    ['M_ST-NameKR/POS','M     3.0','BOOL','Drehtisch nicht in Position'],
    ['M_ST-NameTZStoe', 'M     9.0', 'BOOL', 'Taktzeit Stoerung'],
    ['M_ST-NameTZStop', 'M     9.1', 'BOOL', 'Taktzeit Stopp Hifu'],
    ['M_ST-NameWart', 'M     9.2', 'BOOL', 'Wartung'],
    ['M_ST-NameWarn', 'M     9.3', 'BOOL', 'Warnung'],
    ['M_ST-NameStoe', 'M     9.4', 'BOOL', 'Stoerung'],
             ]

def m_dt_translate(listType,name,addr,cfg=1):
    for x in listType:
        x[0] = x[0].replace("ST-Name", str(name))
        x[1] = "M     " + str(float(x[1].split(" ")[5]) + int(addr))
        if cfg == 2:
            x[3] =x[3].replace("Drehtisch", "Drehtrommel")
        elif cfg == 3:
            x[3] =x[3].replace("Drehtisch", "OverHead")
        else:
            pass

def m_dt_init():
    M_DT = []
    M_DT.clear()
    M_DT = my_DT_list.copy()
    return M_DT

print(my_DT_list)
x1 = m_dt_init()
print(my_DT_list)
print(x1)
m_dt_translate(x1,"22L666WW1",100,cfg=1)
print(x1)
print(my_DT_list)

#我的M_DT列表是通过copy()方法,为什么,函数处理的是M_DT,结果M_DT_list的数据也变化了?
QQ浏览器截图20190408121748.png

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-4-8 14:33:44 | 显示全部楼层
deepcopy
回复

使用道具 举报

3

主题

7

帖子

7

积分

贫民

积分
7
QQ
ZhuYajun  楼主| 发表于 2019-4-8 14:55:10 | 显示全部楼层

哎呀,的确如此。
厉害啦,以前不知道还有deepcopy。
回复 支持 反对

使用道具 举报

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

本版积分规则

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