首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

可变对象不可对象

讲到这里就有个常被提及的概念: 可变对象不可对象 在 Python 中, 可变对象包括 list、dict、set、自定义类型等; 不可对象包括 int、float、bool、str、tuple...不可对象不允许对自身内容进行修改。如果我们对一个不可对象进行赋值,实际上是生成一个新对象,再让变量指向这个对象。...上次我也说到,很多的教程都在用可变和不可变来谈论赋值和参数传递,我觉得这很不好。因为他们说到不可对象时用的是赋值,而说到可变对象又用了 list 的索引、apeend 等方法,这根本是两码事。...而可变对象不可对象本身的不同仅在于一个可以修改变量的值,而另一个不允许。 基于这一设定,两者在功能上的最大区别就是:不可对象可以作为字典 dict 的键 key,而可变对象不行。...原因在于,前者是做了赋值操作,而后者其实是调用的 __iadd__ 方法。

87920

不可变的对象”与“不可变的对象引用”区别

那么何为"不可变的对象引用"呢?...final只保证引用类型变量所引用的地址不会改变,即一直引用同一个对象,但是这个对象的内容(对象的非final成员变量的值可以改变)完全可以发生改变(比如final int[] intArray;,intArray...为什么String对象不可变的?   要理解String的不可变性,首先看一下String类中都有哪些成员变量。...the hash code for the string */ private int hash; // Default to 0   其中,成员变量hash并没有用final声明,但是由于第一次调用...hashCode()会重新计算hash值,并且以后调用会使用已缓存的值,当然最关键的是每次计算时都得到相同的结果,所以也保证了对象不可变。

1.3K20

简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据

谈及pandas的read.xxx系列的函数,常用的读取数据方法为:pd.read_csv() 和 pd.read_excel(),而 pd.read_html() 这个方法虽然少用,但它的功能非常强大...二、原理 pandas适合抓取Table表格型数据,先了解一下具有Table表格型数据结构的网页,举例如下: [hn2vzm93rz.png] [wofls8a5xa.png] 用Chrome浏览器查看网页... 网页具有以上结构,我们可以尝试用pandas的 pd.read_html() 方法来直接获取数据。...三、爬取实战 实例1 爬取2019年成都空气质量数据(12页数据),目标URL:http://www.tianqihoubao.com/aqi/chengdu-201901.html import pandas...p=25 import pandas as pd df = pd.DataFrame() for i in range(1, 26): url = f'http://vip.stock.finance.sina.com.cn

4.5K30

Pandas从HTML网页中读取数据

作者:Erik Marsja 翻译:老齐 与本文相关的图书推荐:《数据准备和特征工程》 电子工业出版社天猫旗舰店有售 ---- 本文,我们将通过几步演示如何用Pandasread_html函数从HTML...read_html函数 使用Pandasread_html从HTML的表格中读取数据,其语法很简单: pd.read_html('URL_ADDRESS_or_HTML_FILE') 以上就是read_html...函数的完整使用方法,下面演示示例: 示例1 第一个示例,演示如何使用Pandasread_html函数,我们要从一个字符串中的HTML表格读取数据。...的DataFrame对象,而是一个Python列表对象,可以使用tupe()函数检验一下: type(df) 示例2 在第二个示例中,我们要从维基百科中抓取数据。...\]","") 用set_index更改索引 我们继续使用Pandas的set_index方法将日期列设置为索引,这样做能够为后面的作图提供一个时间类型的Series对象

9.4K20

Python可变对象不可对象

Python中一切皆对象,每个对象都有其唯一的id,对应的类型和值,其中id指的是对象在内存中的位置。根据对象的值是否可修改分为可变对象不可对象。...其中, 不可对象包括:数字,字符串,tuple 可变对象包括:list,dict,set Python中的变量可以指向任意对象,可以将变量都看成是指针,保存了所指向对象的内存地址(对象的引用)。...不可对象 对于不可对象,如果要更新变量引用的不可对象的值,会创建新的对象,改变对象的引用,举个例子: In [41]: x = 1 In [42]: y = x In [43]: print(...所以,不可对象的优点是对于相同的对象,无论多少个引用,在内存中只占用一个地址,缺点是更新需要创建新的对象,因此效率不高。...False}] In [74]: print(data) [{'name': 'b', 'deleted': False}, {'name': 'c', 'deleted': False}] 你会发现调用

1.1K20

Java 可变对象不可对象

Java 可变对象不可对象 作者:幽鸿   Mar 14, 2016 10:21:27 PM 一、简单定义            不可对象(Immutable Objects)即对象一旦被创建它的状态...(3)不要提供任何可以修改对象状态的方法 - 不仅仅是set方法, 还有任何其它可以改变状态的方法 (4)如果类有任何可变对象属性, 那么当它们在类和类的调用者间传递的时候必须被保护性拷贝     代码...} // /** // * 返回一个可变对象 - 不是一个好的方式. // * // * 调用者得到内部属性的一个直接引用....这通常很危险,因为Date对象既可以 // * 被这个类改变也可以被它的调用者改变.即,类不再对fDate拥有绝对的控制。...     *      * 返回属性的一个保护性拷贝.调用者可以任意改变返回的Date对象,但是不会      * 影响类的内部.为什么?

1.9K20

python可变对象不可对象

在Python中,对象按可变属性可以分为可变对象不可对象两种。理解这两种对象的差异对于编写高效且易于维护的代码至关重要。...本文将介绍Python中的可变对象不可对象,以及在使用它们时需要注意的事项。 1....不可对象 An object with a fixed value. Immutable objects include numbers, strings and tuples....虽然字符串本身是不可变的,但我们可以通过切片(slicing)来获取字符串的子串,这实际上是创建了一个新的字符串对象。例如: my_str = 'Hello, world!'...这是因为字符串在Python中是不可变的,任何对字符串的操作都会生成一个新的字符串对象。 除了切片操作外,我们还可以使用字符串的一些常用方法来处理字符串,如拼接、替换、分割等。

23420

Pandas中的对象

安装并使用PandasPandas对象简介Pandas的Series对象Series是广义的Numpy数组Series是特殊的字典创建Series对象Pandas的DataFrame对象DataFrame...是广义的Numpy数组DataFrame是特殊的字典创建DataFrame对象Pandas的Index对象将Index看作不可变数组将Index看作有序集合 安装并使用Pandas import numpy...先来看看Pandas三个基本的数据结构: Series DataFrame Index Pandas的Series对象 Pandas的Series对象是一个带索引数据构成的一维数组,可以用一个数组创建Series...Pandas 的 Index 对象是一个很有趣的数据结构,可以将它看作是一个不可变数组或有序集合 # 使用一个简单的列表创建Index对象 ind = pd.Index([2, 3, 5, 7, 11]...3, 5, 7, 9, 11], dtype='int64') indA ^ indB # 异或 Int64Index([1, 2, 9, 11], dtype='int64') 这些操作还可以通过调用对象方法来实现

2.6K30

Pandas Cookbook》第09章 合并Pandas对象

更多 # append是concat方法的超简化版本,append内部其实就是调用concat。...比较特朗普和奥巴马的支持率 # pandasread_html函数可以从网页抓取表格数据 In[31]: base_url = 'http://www.presidency.ucsb.edu/data...4. concat, join, 和merge的区别 concat: Pandas函数 可以垂直和水平地连接两个或多个pandas对象 只用索引对齐 索引出现重复值时会报错 默认是外连接(也可以设为内连接...) join: DataFrame方法 只能水平连接两个或多个pandas对象 对齐是靠被调用的DataFrame的列索引或行索引和另一个对象的行索引(不能是列索引) 通过笛卡尔积处理重复的索引值 默认是左连接...(也可以设为内连接、外连接和右连接) merge: DataFrame方法 只能水平连接两个DataFrame对象 对齐是靠被调用的DataFrame的列或行索引和另一个DataFrame的列或行索引

1.9K10

python数据分析——数据分析的数据的导入和导出

总之,数据分析的数据的导入和导出是数据分析流程中不可或缺的两个环节。它们不仅关系到数据分析的准确性和效率,还直接影响到数据分析的价值和意义。...在Python中,导入CSV格式数据通过调用pandas模块的read_csv方法实现。read_csv方法的参数非常多,这里只对常用的参数进行介绍。...JSON文件实际存储的时一个JSON对象或者一个JSON数组。JSON对象是由多个键值对组成的,类似于Python的字典; JSON数组由多个JSON对象组成,类似于Python列表。...关键技术:爬取网络表格类数据, pandasread_html()方法。 read_html方法用于导入带有table标签的网页表格数据。使用该方法前,首先要确定网页表格是否为table标签。...关键技术: DataFrame对象的to_excel方法 与上例相似,该例首先利用Pandas库的read_excel方法读入sales.xlsx文件,然后使用to_excel方法导出新文件。

11310

Python中的可变对象不可对象

什么是可变/不可对象 不可对象,该对象所指向的内存中的值不能被改变。...先看不可对象 不可对象的例子 先说明一点is 就是判断两个对象的id是否相同, 而 == 判断的则是内容是否相同。...所以tuple是不可对象,但又和str和数值类型稍微有点区别。平常说的tuple不可变更多时候是指里面存放的值不能被改变(有些特殊情况,如tuple里面存放了list,可改变list里的元素。...id变化了 print(a1) # [1, 2, 3]没有变 如果是这样写 a1 = [1, 2, 3] a2 = a1 print(id(a1), id(a2)) a2 += [4] # 相当于调用了...a2.extend([4]),原地改变并没有新的对象产生 print(id(1), id(a2)) # 相等,a2的id没有变化 print(a1) 不同的地方在于a2 += [4],这句相当于调用

1.3K50

Python中的可变对象不可对象

Python中所有类型的值都是对象,这些对象分为可变对象不可对象两种: 不可变类型 float、int、str、tuple、bool、frozenset、bytes tuple自身不可变,但可能包含可变元素...,如:([3, 4, 5], 'tuple') 可变类型 list、dict、set、bytearray、自定义类型 +=操作符 +=操作符对应__iadd__魔法方法,对于不可对象...在Python中,不可对象,浅拷贝和深拷贝结果一样,都返回原对象: import copy ​ ​ t1 = (1, 2, 3) t2 = copy.copy(t1) t3 = copy.deepcopy...,只是若原对象中存在可变属性/字段,则浅拷贝产生的对象的属性/字段引用原对象的属性/字段,深拷贝产生的对象和原对象则完全独立: l1 = [1, 2, 3] l2 = l1.copy() print(l1...[1, 2, 3] l2 = l1[:] print(l1 is l2) # False 可变类型的copy方法 [].copy() {}.copy() set().copy() 调用

77410

Python - 可变和不可对象

前置知识 在 Python 中,一切皆为对象 Python 中不存在值传递,一切传递的都是对象的引用,也可以认为是传址 有哪些可变对象,哪些不可对象?...不可对象:字符串、元组、数字(int、float) 可变对象:数组、字典、集合 不可对象和可变对象的区别?...可变对象:改变对象内容,对象在内存中的地址不会被改变 不可对象:改变对象内容,对象在内存中的地址会被改变;如果必须存储一个不同的值,则必须创建新的对象 不可对象的应用场景 它们在需要常量哈希值的地方起着重要作用...不可对象 ?...Python 中的变量有一个内存空间 具体的数据(对象)也有一个内存空间 而变量保存(指向)的是存储数据(对象)的内存地址,一般也叫对象引用 不可对象是指对象内容本身不可变 变的是:改变了值,会创建新对象

1.2K40

JAVA final 与 不可对象

参考:http://www.importnew.com/7553.html final 关键字 简单来说 final关键字不可变 final方法不可被重写 final类不可被继承 final变量 //...String LOAN = "loan"; } // main函数内 LOAN = new String("loan") //invalid compilation error final使得类成员不可变...http://www.cnblogs.com/jaylon/p/5721571.html 特性 成员的值不变 因为值不变,只能读取不能写,所以线程安全 如何建立一个不可变类?...在getter方法中,不要直接返回对象本身,而是克隆对象,并返回对象的拷贝 关于4,如果是String等不可变类的话就可直接赋值。...关于5,如果是返回String等不可变类的对象的话,不必再拷贝,可直接返回。 因为我们的目的是让成员变量不能改,最多只能读。

75330

STRING对象不可变的原理

众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢?可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。...区分对象对象的引用 对于Java初学者, 对于String是不可对象总是存有疑惑。...内存结构如下图所示: Java和C++的一个不同点是, 在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量的值,改变对象的成员变量,调用对象的方法等...所以可以认为String对象不可变的了。 那么在String中,明明存在一些方法,调用他们可以得到改变后的值。...再次说明, a只是一个引用, 不是真正的字符串对象,在调用a.replace('A', 'a')时, 方法内部创建了一个新的String对象,并把这个心的对象重新赋给了引用a。

68440
领券