小甲鱼 发表于 2020-7-16 20:48:32

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

UncleMonster 发表于 2020-7-19 07:53:10

{:10_266:}功亏不负有心人

大毛不困 发表于 2020-9-10 21:01:41

还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改变 A 的同时会改变 B?
但是下面的代码里面A和A又不同时改变。这是为什么呢?
>>> A = * 3
>>> A

>>> A is A
True
>>> A = 1
>>> A

绘梨衣forever 发表于 2021-3-18 15:52:46

大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...

is ,当成==是不是就能理解了?

超越大神 发表于 2021-3-28 15:39:24

大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...

应该是A是元素,不是列表,元素的话肯定相同啊就和字符串一样0==0

zdasd 发表于 2021-4-7 10:20:37

**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

痴我一拳 发表于 2021-5-17 15:21:20

zdasd 发表于 2021-4-7 10:20
**1.列表的加法和乘法**

列表的加法是拼接,要求加号两边都是列表。


码主

苏子长琴 发表于 2021-6-20 10:31:31

大毛不困 发表于 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)的

adeylx 发表于 2021-7-23 16:19:30

{:10_265:}

周生生ZZ 发表于 2021-8-10 13:56:28

打卡022

Cecilia.D 发表于 2021-8-10 20:10:15

已复习,谢谢

进击的Mia 发表于 2021-9-10 15:24:03

厉害了

20070204 发表于 2021-10-8 15:21:18

绘梨衣forever 发表于 2021-3-18 15:52
is ,当成==是不是就能理解了?

好像不一样吧。is是用于检验两个变量是否指向同个对象(也就是存储的位置是否相同),==是判断两边的值(数据)是否相等。

787072317 发表于 2021-10-26 09:35:24

大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...

你这个只是单个列表,所以这样该就没什么问题,举个栗子:如果你的列表是二维列表,你去试试,它里面嵌套同一个二维列表的同一个索引值便会有所不同,
   A = [, , ]:(假设我这个列表是通过“A = * 3”),这种形式创建出来的则会表现出这种情况:A = 1
         A[, , ]


   

是阿佳! 发表于 2021-12-16 06:24:59

本帖最后由 是阿佳! 于 2021-12-16 06:31 编辑

试图通过乘号对一个嵌套列表进行拷贝,事实上拷贝的是对同一个列表的引用

是阿佳! 发表于 2021-12-16 06:31:09

是阿佳! 发表于 2021-12-16 06:24
试图通过乘号对一个嵌套列表进行拷贝,事实上拷贝的是对同一个列表的应用

#正确做法初始化列表
A =
for i in range(3):

    #这是把的每个元素赋值为*3,即是赋值为
    A = * 3
print(A)

yangshengyang 发表于 2022-2-10 10:06:28

本帖最后由 yangshengyang 于 2022-2-10 10:53 编辑

看视频明白了

ASM023 发表于 2022-2-24 10:55:07

打卡~~{:10_254:}{:10_254:}

Unicorn# 发表于 2022-3-2 19:49:06

大毛不困 发表于 2020-9-10 21:01
还是不懂 A = [ * 3] * 3 为什么不行。
A is B == True 意思是 A 和 B 是同一个对象?存储地址相同?改 ...

应该就是存储地址相同
A A存在同一个地方 所以是True

Kingonline 发表于 2022-3-14 22:49:15

打卡{:10_260:}
页: [1] 2 3 4
查看完整版本: 第022讲:列表(IV)