首页 > 编程语言 >PYTHON错误——”赋值“ 和 ”拷贝“

PYTHON错误——”赋值“ 和 ”拷贝“

时间:2022-08-18 09:33:09浏览次数:51  
标签:PYTHON 3047084190464 print 拷贝 x1 id 赋值

# 关于自己写的代码有个逻辑没有问题,但是代码有问题的错误。本质上是关于“拷贝”和“赋值”的错误。
# 我想将每次大循环后x["x1"]的结果保存到a中。
# 即:a: [[0, 1], [0, 1, 0, 1]]
# 但是我得到的结果:[[0, 1, 0, 1], [0, 1, 0, 1]]
'''
python 列表的赋值:a = [1,2,3],  b = a;相当于a和b都指向同一块内存空间;即指针相同;
python 列表的拷贝:a = [1,2,3],  b = a;相当于b在内存中开辟了另一块内存空间,存储的值为a列表的值;

'''

import copy

print("-"*100, "“赋值”代码", "-"*100)
# TODO 1. “赋值”代码
x = {
        "x1": [],
        "x2": []
    }
a = []

for i in range(2):
    for j in range(2):
        x["x1"].append(j)
    a.append(x["x1"])
for i in range(len(a)):
    print("id(a[i])", id(a[i]))
    print("value(a[i])", a[i])

# TODO 2. “拷贝”代码
print("-"*100, "“拷贝”代码", "-"*100)
x = {
        "x1": [],
        "x2": []
    }
a = []

for i in range(2):
    for j in range(2):
        x["x1"].append(j)
    a.append(copy.copy(x["x1"]))

for i in range(len(a)):
    print("id(a[i])", id(a[i]))
    print("value(a[i])", a[i])

'''
---------------------------------------------------------------------------------------------------- “赋值”代码 ----------------------------------------------------------------------------------------------------
id(a[i]) 3047084190464
value(a[i]) [0, 1, 0, 1]
id(a[i]) 3047084190464
value(a[i]) [0, 1, 0, 1]
---------------------------------------------------------------------------------------------------- “拷贝”代码 ----------------------------------------------------------------------------------------------------
id(a[i]) 3047084210816
value(a[i]) [0, 1]
id(a[i]) 3047084190464
value(a[i]) [0, 1, 0, 1]


# 解释
3047084190464  == 3047084190464  :第一次,赋值相当于多个引用,指针
3047084210816  == 3047084190464  :第二次,拷贝相当于新开辟空间存储
'''

 

标签:PYTHON,3047084190464,print,拷贝,x1,id,赋值
From: https://www.cnblogs.com/xiao-yu-/p/16597605.html

相关文章

  • python 中如何将列表中的数值转换为字符串
     001、>>>test1=["aaa",100,200]>>>test1['aaa',100,200]>>>test2=[str(k)forkintest1]##将列表test1中的数值转换为字符串>>>test2['aaa......
  • python 中统计不同scafflod的GC含量并输出GC含量最高的scafflod
     001、方法1root@PC1:/home/test#lsa.fastatest.pyroot@PC1:/home/test#cata.fasta##测试fasta文件>Rosalind_6404CCTG......
  • python 中输出字典中的键、值最小、最大的项
     001、输出最小、最大的键或者值>>>dict1={"c":800,"d":600,"a":900,"b":700}>>>dict1{'c':800,'d':600,'a':900,'b':700}>>>min(dict1)......
  • python中生成指定序列的反向互补序列
     001、方法1:root@PC1:/home/test#lstest.pyroot@PC1:/home/test#cattest.py##测试程序#!/usr/bin/pythonout_file=open("result.txt","w")......
  • Python学习
    常用快捷键ctrl+alt+s:打开软件设置ctrl+d:复制当前行代码shift+alt+上\下:将当前行代码上移或下移ctrl+shift+F10:运行当前代码文件shift+......
  • python学习Day47
    Day47今日内容概要操作表的SQL语句补充表查询关键字select与fromwhere筛选groupby分组having过滤distinct去重orderby排序limit分页regexp正则......
  • python装饰器
    1.简介​ Python中的装饰器是一种可以装饰其它对象的工具。类似于装饰模式,实际是对原有对象进行功能上的增强(原有对象可以是对象、函数、类)。其使用像java的注解。​......
  • 关于python如何引用excel文件
    关于python如何引用excel文件importpandasaspd#引用pandas库,as:将pandas简写为pdNowcoder=pd.read_excel("1.xlsx")#使用read_XXX函数,()内的是文件名.#需要注......
  • python序列-列表
    列表-LISTpython中的列表是有一系列按特定顺序排列的元素组成,列表是属于python内置的可变序列。语法上列表的元素都是放在一对中括号‘[]’中,两个相邻的元素之间使用......
  • python 代码测试(pytest)
    前话代码测试用于检验代码运行结果是否符合预期。优势一:编写测试函数,更规范,高效的核对代码运行结果,当被测试对象进行了调整和重构的时候,可以节省大量人工排查问题的时间......