购买主题
{:10_266:}功亏不负有心人
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改变 A 的同时会改变 B?
但是下面的代码里面A和A又不同时改变。这是为什么呢?
>>> A = * 3
>>> A
>>> A is A
True
>>> A = 1
>>> A
大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...
is ,当成==是不是就能理解了?
大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...
应该是A是元素,不是列表,元素的话肯定相同啊就和字符串一样0==0
**1.列表的加法和乘法**
列表的加法是拼接,要求加号两边都是列表。
>>> s =
>>> t =
>>> s + t
列表的乘法是重复列表内的所有元素若干次
>>> s * 3
**2.嵌套列表**
嵌套列表就是在列表里面嵌入一个新的列表。
创建一个二维列表:
>>> matrix = [,,]
创建二维列表的语句还可以这么写:
>>> matrix = [,
,
]
>>> matrix
[, , ]
这两种写法是等价的。第二种写法与第一种写法打印出的内容一样,第二种写法的好处是显得更为直观。
**3.访问嵌套列表**
访问嵌套列表中的元素,我们可是使用循环来实现。
迭代一个列表我们使用一层循环,迭代嵌套列表我们就应该相应使用使用嵌套循环。
>>> for i in matrix:
for each in i:
print(each)
1
2
3
4
5
6
7
8
9
[可以看到整个列表的所有数据]
改装,添加空格和换行
>>> for i in matrix:
for each in i:
print(each,end=' ')
print()
[ print默认最后跟一个换行符,end = ' '改为以空格隔开各元素 ]
1 2 3
4 5 6
7 8 9
[列表更加直观]
通过下标,同样是可以访问列表的:
>>> matrix
[我们只给出一个下标索引,我们得到的是以行为单位的整个列表]
为了访问列表中的列表的元素,我们需要使用两次下标索引
>>> matrix
1
>>> matrix
5
>>> matrix
9
上面我们通过每个元素的值来创建二维列表,除此之外,还可以通过循环语句创建并初始化二维列表
>>> A = * 3
>>> A
通过迭代,创建一个二维列表
>>> for i in range(3):
A = * 3
>>> A
[, , ]
B的方法是错误的,而且错的非常高级,通常不容易发现。
>>> B = [ * 3] * 3
>>> B
[, , ]
>>> A = 1
>>> A
[, , ]
>>> B = 1
>>> B
[, , ]
**4.运算符is**
也称之为同一性运算符,用于检验两个变量是否指向同一个对象的一个运算符。
>>> x = "FishC"
>>> y = "FishC"
>>> x is y
True
>>> x =
>>> y =
>>> x is y
False
[这说明python对于不同对象的存储机制是不一样的
字符串是不可变的,只需要在内存中开辟一个位置来存放,
列表是可变的,尽管两个列表内容一样,但python还是需要为它们开辟两个不同的位置]
进行"亲子鉴定"
>>> A is A
False
>>> B is B
True
>>> B is B
True
zdasd 发表于 2021-4-7 10:20
**1.列表的加法和乘法**
列表的加法是拼接,要求加号两边都是列表。
码主
大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...
因为A和A为只读数据类型,当A = 0,A = 0时,python解释器会“偷懒”,将变量名A,A共同绑定在一个0这个整数上,而不是一个变量名绑定一个0,所以A is A为True,但当A(或A重新赋不与原来相同的值时,A(或A)将重新绑定一个新的值,所以此时A与A是分别指向不同值的对象,此时id(A)!=id(A),之前的id(A)==id(A)的
{:10_265:}
打卡022
已复习,谢谢
厉害了
绘梨衣forever 发表于 2021-3-18 15:52
is ,当成==是不是就能理解了?
好像不一样吧。is是用于检验两个变量是否指向同个对象(也就是存储的位置是否相同),==是判断两边的值(数据)是否相等。
大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...
你这个只是单个列表,所以这样该就没什么问题,举个栗子:如果你的列表是二维列表,你去试试,它里面嵌套同一个二维列表的同一个索引值便会有所不同,
A = [, , ]:(假设我这个列表是通过“A = * 3”),这种形式创建出来的则会表现出这种情况:A = 1
A[, , ]
本帖最后由 是阿佳! 于 2021-12-16 06:31 编辑
试图通过乘号对一个嵌套列表进行拷贝,事实上拷贝的是对同一个列表的引用
是阿佳! 发表于 2021-12-16 06:24
试图通过乘号对一个嵌套列表进行拷贝,事实上拷贝的是对同一个列表的应用
#正确做法初始化列表
A =
for i in range(3):
#这是把的每个元素赋值为*3,即是赋值为
A = * 3
print(A)
本帖最后由 yangshengyang 于 2022-2-10 10:53 编辑
看视频明白了
打卡~~{:10_254:}{:10_254:}
大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...
应该就是存储地址相同
A A存在同一个地方 所以是True
打卡{:10_260:}
已有 25 人购买 本主题需向作者支付 5 鱼币 才能浏览