首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源图书《Python完全自学教程》第5.2.1节

Python 中,作为内置对象(也是对象类型)的集合,同样具有这些特性,也能实现数学中集合的运算。可以说,Python 中的“集合”就是数学中“集合”在编程中的实现。...如果读者查看 set() 的帮助文档,会发现其参数必须是可迭代对象(这很重要)。至此,我们已经学过的 Python 内置对象中,符合此要求的有:字符串、列表、元组、字典。...(字典则是成员的键),且它们不能重复,即“互异”。...'n', 'o', 'y', 'h'] 最后要说明的,不论用 set() 还是用符号 { } 创建集合对象,其的成员必须是“不可变对象”——5.1.1节中解释字典的键值对的键曾使用过这个术语。...但是未果,因为 [1, 2] 是可变对象,它不能作为集合的成员。 注释(4)执行后的报错信息中,在此出现 unhashable ,相关说明参阅5.1.1节。 同样,字典不能成为集合的成员。

38630

2022年最新Python大数据之Python基础【五】

# TypeError: 'int' object is not iterable 括号内必须是可迭代对象 # list2.extend(4) # 字符串累心哪怕只有一个值,或者只有一个空字符串,都是可迭代类型...尝试后发现总是删除最后一个,会将删除的键值对以元组的形式进行返回 # del # 使用del删除键值对,先要找到dict所对应的键,进行删除 # 注意,字典中键值对是成对出现的,删除键值也就消失了,不能出现单独的键或者单独的值...(了解) # Python3.5以后,字典中键值对的顺序和我们插入键值对的顺序保持一致,但是该顺序没法被利用(了解) 12、字典的修改 字典[key] = 值 字典中key必须存在 update...# 布尔值进行计算 True == 1 Fasle == 0 # 基础数据类型 int float bool 字符串 都可以用集合储存 set4 = {1, 12.3, True, 0, False...作为元素出现 # 拓展:不能作为集合元素的数据类型,同样不能作为字典的键出现 dict1 = {(1, 2): 3} print(dict1) # TypeError: unhashable type

3.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python学习手册之数据类型

字典是一个映射类型,在其它语言中被称为 map。字典用 {} 来标识,使用键 : 值 (key : value) 存储,具有极快的查找速度,使用 [] 语法来访问。...字典为空的表现形式为 {} 只有不可变的对象可以用作字典的 key,不可变的对象是指那些不能更改的对象。到目前为止,我们遇到的唯一可变对象是列表和字典。...可变对象做键值会触发 TypeError 异常。...与这种方法不同的是,当字典里没有该键值 get 方法取回的值是 None,而不会触发 KeyError 异常。...使用 [::-1] 切片是一种常见的方法来反转列表。 列表生成式 列表生成式即 List Comprehensions,是 Python 内置的非常强大却简单的可以用来创建列表的生成式。

1.1K20

TypeError: unhashable type: dict

当我们尝试对不可哈希(unhashable)的对象进行哈希操作,就会出现TypeError: unhashable type的错误。...而可变(mutable)对象,如列表和字典,就不能被哈希。TypeError: unhashable type: 'dict'错误的原因在Python中,字典是可变的,也就是说它们可以被修改。...因此,字典是不可哈希的(unhashable)。当我们尝试将一个字典作为键值(key)或将字典添加到集合(set)中,就会出现TypeError: unhashable type的错误。...而当我们不小心尝试字典进行哈希操作,就会出现TypeError: unhashable type的错误。 一个常见的应用场景是使用字典作为缓存的键值。...需要注意的是,Python中,虽然整型(int)和浮点型(float)是不可变对象,但是字符串(str)是可变对象,即可以通过切片(slice)等操作来修改字符串的值。

44640

Python 进阶指南(编程轻松进阶):七、编程术语

因为字典中只能使用可哈希项作为键,所以不能使用包含不可哈希列表的元组作为键。...Python 的早期版本中,不能保证从字典中以一致的顺序获得条目。...这两个对象都是可迭代对象(或者简称为可迭代值)的例子。 for循环中使用可迭代对象。...实际上,字符串对象'42'并没有被转换,因为int()函数基于原始对象创建了一个新的整数对象。当转换像这样显式完成,我们就转换了对象,尽管程序员仍然经常称这个过程为转换对象。...属性与特性 许多语言中,术语属性和特性被用作同义词,但是 Python 中这些词有不同的含义。第 124 页“变量与属性”中解释的属性是与对象相关的名称。属性包括对象的成员变量和方法。

1.6K20

Python 内建函数大全

结果是一个有效的 Python 表达式。如果 x 不是Python int 对象,则必须定义返回整数的 __index __() 方法。...locals() 更新并返回表示当前本地符号表的字典函数块中调用时,locals() 返回自由变量,但不能在类块中调用。 !...对于许多类型,此函数尝试返回一个字符串,该字符串传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。...该属性是动态的,并且可以继承层次结构更新更改。 如果省略第二个参数,则返回的 super 对象是未绑定的。...第二种使用情况是动态执行环境中支持协同多继承。这种使用情况是 Python 独有的,静态编译语言或仅支持单继承的语言中找不到。这使得可以实现 “菱形图”,其中多个基类实现相同的方法。

1.9K30

python 基础内置函数表及简单介绍

hash(object) 返回对象的散列值(如果有)。哈希值是整数。它们用于字典查找期间快速比较字典键。...locals() 更新并返回表示当前本地符号表的字典函数块中调用时,locals() 返回自由变量,但不能在类块中调用。...结果是一个有效的 Python 表达式。如果 x 不是 Python int 对象,则必须定义返回整数的 __index__() 方法。...对于许多类型,此函数尝试返回一个字符串,该字符串传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。...第二种使用情况是动态执行环境中支持协同多继承。这种使用情况是 Python 独有的,静态编译语言或仅支持单继承的语言中找不到。这使得可以实现 “菱形图”,其中多个基类实现相同的方法。

1.3K20

Python内置数据结构之字典

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。...字典的定义及初始化, d = {} d = dict() d = {'a': 1, 'b': 2} d = dict([('a', 1), ('b', 2)]) # 可迭代对象的元素必须是一个二元组,二元组的第...5), 'abc') # 传入的可迭代元素为key,值为abc dict可以用在需要高速查找的很多地方,Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象...要保证hash的正确性,作为key的对象不能变。Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。...而list是可变的,就不能作为key: d = {} key = [1, 2, 3] d[key] = 'a list' TypeError: unhashable type: 'list' 键-值:

66140

Python内置函数详解【翻译自pyth

bool类是int的一个子类。它不能被子类化。...hash(object) 返回该对象的哈希值(如果有的话). 哈希值应该是一个整数。哈希值用于查找字典快速地比较字典的键。...结果是一个合法的Python表达式。如果x不是Python int对象,则必须定义一个返回整数的__index__()方法。...第二种使用情况是动态执行环境中支持协同多继承。这种使用情况是Python独有的,静态编译语言或仅支持单继承的语言中找不到。这使得可以实现“菱形图”,其中多个基类实现相同的方法。...这重复了相同的迭代器n次,以使每个输出元组具有对迭代器的n调用的结果。这具有将输入划分为n个长块的效果。 zip()当迭代器元素不一致,循环停止较短的迭代器元素,较长的迭代器元素会被舍弃。

1.5K20

Python 数据分析(PYDA)第三版(一)

我不喜欢“脚本语言”这个术语,因为它带有一种暗示,即它们不能用于构建严肃的软件。出于各种历史和文化原因,解释性语言中Python 已经发展成一个庞大而活跃的科学计算和数据分析社区。...在其他编程语言中字典有时被称为哈希映射或关联数组。字典存储一组键-值对,其中键和值是 Python 对象。每个键都与一个值关联,以便可以方便地检索、插入、修改或删除给定特定键的值。...设置值,可能字典中的值是另一种集合,比如列表。...虽然字典的值可以是任何 Python 对象,但键通常必须是不可变对象,如标量类型(int、float、string)或元组(元组中的所有对象也必须是不可变的)。...enumerate 迭代序列,通常希望跟踪当前项目的索引。

4600

Python2】03、Python对象

常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作 例如: int a;               #a变量 const int b=10;              ...,通过索引访问其中的元素,可变对象,支持异构,任意嵌套       支持原处修改, ?...5、映射类型 字典在其它编程语言中又称作关联数组或散列表 通过键实现元素存取,无序集合,可变类型容器,长度可变,支持异构、嵌套 格式:{key1:value1,key2:value2,......,如字符串、数字、元组等        包含可变对象的列表、字典和元组不能用作键 m[k]运算符用于选择映射对象中的一项,其中“k”是一个键值        引用不存在的键会引发KeyError异常 m.iteritems...__doc__ 4、容器、类型、对象  1)容器类对象(列表,元祖,字典字面量)可以不使用续航符的情况下分布于多行,最后一个元素的后面允许使用一个逗号  2)列表和字典都支持两种类型的复制操作:浅复制和深复制

1K20

这些python3的小知识点你都知道吗?

__init__() should return None 32、子类定义了父类的方法 当子类定义了与父类相同的属性和方法,会将父类属性或方法覆盖,子类对象调用的时候会调用到覆盖之后的新属性或方法...如果第二个参数不是类或者由类对象组成的元祖,会抛出一个 TypeError 异常。...f = something(f) 38、魔法方法 魔法方法总是被双下划线包围,例如 init(), init() 方法的返回值一定是None,不能是其它。当重写init() 方法一定不能忘记。...39、new()方法 new() 是一个对象实例化的时候所调用的第一个方法。...42、迭代不能取上一个值 迭代器性质决定没有办法回退,只能往前进行迭代不能获取上一个值。 43、如何判断是否有迭代功能 判断一个容器是否拥有iter()和next()方法来判断是否具有迭代功能。

62960

python 列表的实现探析

从细节上看,Python中的列表是由对其它对象的引用组成的连续数组,指向这个数组的指针及其长度被保存在一个列表头结构中。这意味着,每次添加或删除一个元素,由引用组成的数组需要该标大小(重新分配)。...实现过程中,Python创建这些数组采用了指数分配的方式,其结果导致每次操作不都需要改变数组的大小,但是也因为这个原因添加或取出元素的平均复杂度较低。...同时,当判断一个list的布尔值,如果list没有实现__bool__方法,也会尝试调用__len__方法 实现了__reversed__方法,意味着可以实现反转操作 实现了__getitem__方法...这同时也表明,如果我们说一个对象是不可变序列,暗示这个对象是一个可迭代对象、可以使用for循环、......。...我们可以分别在数组中存储了一个字符串,一个整形,以及一个字典对象,假如是数组实现,则需要将数据存储相邻的内存空间中,而索引访问就变成一个相当困难的事情了,毕竟我们无法猜测每个元素的大小,从而无法定位想要的元素位置

1.7K20

Python基础】Python3十大经典错误及解决办法

(3)错误使用自操作运算符++或--等 报错信息: 1SyntaxError:invalid syntax 错误示例: 1v = 64 2v++ 解决方法: Python言中,没有类似C语言的++或...四、 TypeError 类型错误 (1)整数和字符串不能进行连接操作 报错信息: 1TypeError: Can`t convert 'int' object to str implicitly 2TypeError...(2)调用函数参数的个数不正确,或者未传递参数 报错信息: 1TypeError: input expected at most 1 arguments,got 2 2TypeError: say()...报错信息: 1KeyError: 'c' 错误示例: 1d = {'a':1,'b':2} 2print(d['c']) 解决方法: 访问字典中的元素,先用in关键字检测要访问的键名是否存在,或者是使用字典和...9# Python将变量s视为一个本地的局部变量,但该变量未初始化。 解决方法: 函数内使用全局变量,使用global关键字对其进行声明即可。

1.7K30

Python自学之路-内置函数说明及实例(四)

3.int(x,base=10) 不传入参数,得到结果0。 传入数值,调用其__int__()方法,浮点数将向下取整。 传入字符串,默认以10进制进行转换。...如果classinfo类型对象,不是一个类型对象或者由多个类型对象组成的元组,则会报错(TypeError)。 6.iter(object[,sentinel]) 函数功能返回一个可迭代对象。...创建的迭代对象调用__next__方法的时候会调用这个可被调用对象,当返回值和sentinel值相等,将抛出StopIteration异常, 终止迭代。...9.locals() 函数功能返回当前作用域内的局部变量和其值组成的字典,与globals函数类似(返回全局变量) 可用于函数内。 返回的字典集合不能修改。...当传入多个可迭代对象,函数的参数必须提供足够多的参数,保证每个可迭代对象同一索引的值均能正确传入函数。 当传入多个可迭代对象,且它们元素长度不一致,生成的迭代器只到最短长度。

70320

Python的一些小基础

不能以数字开头 不能使用python内置关键字 严格区分大小写 7、python中的数据类型: 字符串、数字、列表、元组、集合、字典 8、Python言中的输入输出方法: 输入input() 输出print...() Python言中的数据类型转换方法: int(x [,base ])         将x转换为一个整数     long(x [,base ])        将x转换为一个长整数     float...Python中组合数据类型: 序列类型、集合类型、映射类型 列表的创建和访问: 列表用[]创建,列表之内可以嵌套列表 使用list()创建列表,使用该函数, 需要给函数传递一个可迭代类型的数据 19、...、列表推导式 [表达式for迭代变量in可迭代对象[if 条件表达式] ] 元组的创建和访问 通过()创建元组 小括号可以省略 通过tuple()创建元组 可以通过索引、切片的方式访问元组 集合的创建和访问...in可迭代对象[if条件表达式] } 字典的创建和访问 可以直接创建,将键值对放在大括号中 也可以通过dict()创建字典,等 字典的访问可以 通过[]获得值 get()方法获得值,等 字典的基本操作

44220

Python字典构造函数formkeys()与dict()

Python中的字典在其他语言中有不同的称呼,比如JS中叫做对象,PHP中叫做数组等等,各有各的称呼,但是个人觉得字典这个名称比较合适,字典反映了这种数据类型的特性,表示通过某个值去查找另一个值。...python中的字典就是通过一个键查找一个值,在后面的数据库的表对象查找的时候也是使用类似的方法,JSON数据的查找也是类似方法...... ---- 字典的作用: 1....)) 返回结果: {'name': 'Tom', 'age': 18, 'love': 'python'} # 注意:字典中的键不能重复 dict1 = {'name':...': 18, 'name': 'python'} print(dict1) 返回结果: {(1, 2, 3): 'Tom', 'age': 18, 'name': 'python'} TypeError...: unhashable type: 'list' ---- 2.使用formkeys()创建字典 dict2 = dict.fromkeys('python', 'JavaScript') # 第一个参数是可迭代数据

44340

新手上路必学的Python函数基础知识,全在这里了(多段代码举例)

如果你发现你大量使用了全局变量,可能表明你需要面向对象编程(使用类) 02 返回多个值 当我使用Java和C++编程后第一次使用Python编程,我最喜欢的特性就是使用简单语法就可以从函数中返回多个值...03 函数是对象 由于Python的函数是对象,很多在其他语言中比较难的构造在Python中非常容易实现。...这个特性是通过迭代器协议来实现的,迭代器协议是一种令对象可遍历的通用方式。........: print(key) a b c 当你写下for key in some_dict 的语句Python解释器首先尝试根据some_dict生成一个迭代器...大部分以列表或列表型对象为参数的方法都可以接收任意的迭代对象

64120
领券