Python把同一个对象循环赋值给另外一个变量

Python把同一个对象循环赋值给另外一个变量,修改一个对象,其他对象也修改了

>>> row=[‘_‘] * 3
>>> board = []
>>> for i in range(3):
...     board.append(row)
...
>>> row
[‘_‘, ‘_‘, ‘_‘]
>>> board
[[‘_‘, ‘_‘, ‘_‘], [‘_‘, ‘_‘, ‘_‘], [‘_‘, ‘_‘, ‘_‘]]
>>> board[2][1]=‘A‘
>>> row
[‘_‘, ‘A‘, ‘_‘]
>>> board
[[‘_‘, ‘A‘, ‘_‘], [‘_‘, ‘A‘, ‘_‘], [‘_‘, ‘A‘, ‘_‘]]  #3个子对象都被修改了
>>>

如果不想复制对象,可以在循环赋值前初始化下被赋值的变量

>>> board = []
>>> for i in range(3):
...     row=[‘_‘] * 3   #循环赋值前,初始化下变量
...     board.append(row)
...
>>> board
[[‘_‘, ‘_‘, ‘_‘], [‘_‘, ‘_‘, ‘_‘], [‘_‘, ‘_‘, ‘_‘]]
>>> row
[‘_‘, ‘_‘, ‘_‘]
>>> board[2][0] = ‘X‘
>>> board
[[‘_‘, ‘_‘, ‘_‘], [‘_‘, ‘_‘, ‘_‘], [‘X‘, ‘_‘, ‘_‘]]
>>> row
[‘X‘, ‘_‘, ‘_‘]
>>>
时间: 2024-10-29 10:45:44

Python把同一个对象循环赋值给另外一个变量的相关文章

javabean对象自动赋值给另一个javabean对象

方法1:把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method; public static Object convertBean2Bean(Object from, Object to) { try {

[python]类型与对象

1. 术语 程序中所存储的所有数据都是对象.每个对象都有一个身份.一个类型和一个值.对象的身份可以看作是指向它在内存中所处位置的指针,变量名就是引用这个具体位置的名称.对象的类型也称作类别,用于描述对象的内部表示及它支持的方法与操作.创建特定类型的对象时,有时也将该对象称为该类型的实例.实例被创建之后,它的身份和类型就不可改变.如果对象的值是可以修改的,称为可变对象,反之称为不变对象.如果某个对象包含对其他对象的引用,则将其称为容器或集合.大多数对象拥有大量特有的数据属性和方法.属性就是与对象相

使用C语言为python编写动态模块(1)--从底层深度解析python中的对象以及变量

楔子 我们知道可以通过使用C语言编写动态链接库的方式来给python加速,但是方式是通过ctypes来加载,通过类CDLL将动态链接库加载进来得到一个对象之后,通过这个对象来调用动态链接库里面的函数.那么问题来了,我们可不可以使用C语言为python编写模块呢?然后在使用的时候不使用ctypes加载动态库的方式,而是通过python的关键字import进行加载. 答案是可以的,我们知道可以通过编写py文件的方式来得到一个模块,那么也可以使用C语言来编写C源文件,然后再通过python解释器进行编

Python学习_01_对象

之前关于python的知识比较零散,这一个系列的随笔将python重新学习整理一遍.学习书籍<Python核心编程>第二版. Python对象基础 python并不是一个单纯面向对象的语言,他融合了其他语言,如函数式语言的特性.但是python的面向对象也是很强大的. 所有的Python对象都具有三个属性:身份(id),类型(type),值(value).身份属性可以通过内建函数id()获得,可以看做是对象的内存地址,每个对象的id值都是唯一的,所以可以用id来判断两个对象是否是同一块内存的不

不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 对象的动态创建和释放 对象的赋值和复制 静态属性和静态函数 类模板 示例1.CppEmployee 类CppEmployee.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppEmployee { int Number; // 默认为 private private: // 以下都是

C++ 对象的赋值和复制 基本的

对象的赋值 如果对一个类定义了两个或多个对象,则这些对象之间是可以进行赋值,或者说,一个对象的值可以赋值给另一个同类的对象.这里所指的值是指对象中所有数       据的成员的值.对象之间进行赋值是“=”进行的,对象赋值的形式如下: 对象名1=对象名2; #include <iostream>using namespace std;class Box{public: Box(int =10,int =10,int =10); int volume();private: int height;

python回顾(十一)——对象管理

对象的创建 __new__方法作用 __new__方法用于定义创建对象时执行的操作,__new__方法仅仅为用户提供一个创建对象时干预的入口,真正执行创建对象的操作由object类中的__new__方法完成 __new__方法定义 定义__new__方法是对object类中__new__方法的重写,重写该方法时必须再次调用object类中的__new__方法 __new__方法调用 __new__方法在创建对象时自动运行,无需手工执行调用该方法 对象的删除 del操作作用 del操作的实质是断开

python中的for循环对象和循环退出

流程控制-if条件 ? 判断条件,1位true,0是flesh,成立时true,不成立flesh,not取反 if ?1; ? ? ?print 'hello python' ? ?print 'true' ? not取反,匹配取反,表示取非1大于2的正确关系,也就是说取1大于2的不正确证明的结果 if ? not 1 > 2 and ?1 == 1; ? ? ? ? ?print 'hello python' ? ? print 'true' if ?1 > 2; ? ?print 'hel

Python学习-解压可迭代对象赋值给多个变量

解压序列赋值给多个对象 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = ['abcd','a',1,2,(3,4)]>>> a,b,c,d,e = data>>> a,b,c,d,e('abcd', 'a', 1, 2, (3, 4))>>> a,b,c,d,(e,f) = data>>> f4>>