2016 - 2024

感恩一路有你

python脚本输入可变参数 有哪些用Python语言讲算法和数据结构的书?

浏览量:2293 时间:2023-05-09 08:29:15 作者:采采

有哪些用Python语言讲算法和数据结构的书?

Python通用数据结构全白原理

Python中常见的数据结构可以统称为du作为一个容器。有序的zhi列(比如dao列表和元组)、映射(比如字典)和集合是三种主要的容器类型。

I .序列(列表、元组和字符串)

序列中的每个元素都有自己的编号。Python中有六个内置序列。列表和元组是最常见的类型。其他包括字符串、Unicode字符串、缓冲区对象和xrange对象。下面重点介绍以下列表、元组和字符串。

1.目录

列表是可变的,这是它区别于字符串和元组的最重要的特征。总之,列表可以被修改,但是字符串和元组可以。;t.

(1)、创建

您可以通过以下创建列表:

一个

2

列表1[你好,世界]

打印列表1

列表2[1,2,3]

打印列表2

输出:

[你好,世界]

[1, 2, 3]

如您所见,该方法与javascript中的数组非常相似。

(2)列表功能

list函数(事实上,list是一种类型而不是函数)对于创建字符串列表非常有效:

一个

2

列表3列表(你好)

打印列表3

输出:

[h,

Python中赋值,浅拷贝,深拷贝都是什么意思?

和很多语言一样,Python可以分为简单赋值、浅层复制和深层复制。

在学习的过程中,对浅抄的理解一开始是非常模糊的。但是,经过一系列的实验,我发现我对这三个概念有了更好的理解。

一.转让

赋值是这三种操作中最常见的。让 让我们通过一些例子来分析赋值操作:

Str案例

代码如下:: gtgt gt A hellogtgt B hellogtgt C AGT gtt[ID(x)for x in A,B,c] [4404120000,4404120000,4404120000]从上面的指令中,我们可以发现A,B,C的地址是相同的。所以上面的赋值操作相当于c a b hello。

赋值是指系统先给一个变量或对象分配内存(你好这里),然后再给A、B、c分配地址。。所以他们的地址是一样的。

列表示例

代码如下::,gtgt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt,gt [ID (x) for x in a,b,c] [403975952,40 Why?

因为str是不可变的,h: gtgt gt A world gtgtgt[ID(x)for x in A,B,c] [4404120432,4404120000,4404120000] gtgt print a,B,c world hello hello此时,A的地址和值发生了变化,但B,C的地址和值没有变化。由于str的不变性,A需要重新打开内存空间重新赋值,所以A的值发生变化,A指向的地址也发生变化。b和C不会因为h: gtgt gt a[0]world gtgtgt[ID(x)for x in a,b,c] [4403975952,4404095096,4403975952] gtgt print a,b,c [world] [world]。由于list的可变性,修改list的值不需要再开辟一个空间,只需要修改原地址的值即可。所以a和c都变了。

了解了以上的区别,就可以很好的分析浅抄和深抄了。

我们都用list做例子。

第二,浅层复制

代码如下:: gtgt gt A[你好,[123,234]]gtgt gt B A[:]gtgt t[ID(x)for x in A,b] [4496003656,4496066752]gtgt gt[ID(x)for x in A][4496091584,4495947536]gtgt gt[ID(x)for x in B][449606067536列表是可变的,所以要开辟不同的空间。浅抄是抄吗?看第5行-

8.我们发现A和B中元素的地址是相同的。说字符串的h: gtgt gt a[0]worldgtgtgt a[1]。附加(345) gtgt gt打印a,a,

在,b,ba [world,[123,234,345]] b [h: gtgt from copy import deepcopygtgt A[hello,[123,234]]gtgt B deepcopy(A)gtgt[ID(x)for x in A,b] [4496066824,4496066680]gtgt gt[ID(x)for x in A][4496091584,4496067040]gtgt gt[ID(x)for x in B][这是一个完整的副本。

修改a的值后:

复制代码如下:: gtgt gt a[0]worldgtgtgt a[1]。附加(345) gtgt gt打印a,a,

,B,ba [world,[123,234,345]] b [hello,[123,234]]从第4,5行可以发现,只修改了A,B根本没有修改。因为B是完整的副本,所以元素地址都和A不一样,如果A被修改,B不会受到影响。

总结:

1.赋值就是把一个对象的地址赋给一个变量,让变量指向地址(旧瓶装新酒)。

2.浅拷贝是在另一个地址创建一个新的变量或容器,但容器中元素的地址都是源对象元素地址的拷贝。即据说新容器指向旧元素(新瓶装旧酒)。

3.深度拷贝是在另一个地址创建一个新的变量或容器,同时容器中元素的地址也是新打开的,只是值相同,这是一个完整的拷贝。也就是说(新瓶装新酒)。

地址 列表 ID

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。