Python学习记录-类型总结
Python的基本数据类型
基本数据类型:字符串,数字,列表,元组,字典;
归类:
1.是否可变
a.可变类型:列表,字典
b.不可变:字符串,数字,元组
2.访问顺序:
a.直接访问:数字
b.顺序访问:字符串,列表,元组
c.映射:字典
********************************************************
集合
由不同元素组成的集合(去重),无序的,可Hash值,可以作为字典的Key的一类值
例子:
第一种方式:a={1,3,2,(1,3,2)}
第二种方式:b=set("zenghuaguang")
通过关键字创建不可变的集合:frozenset()
集合的元素必须是不可变的类型(可Hash的类型):数字,字符串,元组
集合的操作:
#集合的操作 s={'s',1,'6','p'} #复制 s1=s.copy() #删除-随即删除 s.pop() #指定删除,如果要删除元素的不存在集合中,会抛出异常 s.remove('s')
#删除指定元素,如果要删除的元素不存在,不会抛出异常
s.discard('oooo')
新增一个元素
s.add('Hello world') --把Hello world 当成一个元素插入集合
s.update('Hello world') --把Hello world 迭代后一次插入集合
清空
s.clear() --清空集合的内容
del s --内存都会清空
包含,等于
set('leo')==set('leo') --True
set('Leo')<set('LeoLeosss') --True
取交集
set('Leo') or set('Mic-Leo') a.intesection(b)
取并集
set('Leo') and set('Mic') a.union(b)
取差集
a.difference(b)
-----------------------------------------------------------------------------
元组
元组是固定且不可改变的。这意味着一旦元组被创建,和列表不同,它的内容无法被修改或它的大小也无法被改变。
虽然它们不支持改变大小,但是我们可以将两个元组合并成一个新元组。这一操作类似列表的resize操作,但我们不需要为新生的元组分配任何额外的空间:
如果我们将其与列表的append操作比较,我们会看到它的复杂度是O(n)而不是列表的O(1)。这是因为对元组每添加一个新元素都会有分配和复制操作,而不是像列表那样仅在额外的空间耗尽时发生。所以元组并没有提供一个类似append的自增操作,任意两个元组相加始终返回一个新分配的元组。
1、元组声明与赋值
声明一个元组并赋值的语法与列表相同,不同之处是元组使用小括号,列表使用方括号,元素之间也是用英文逗号分隔。需要注意的是,当元组只有一个元素时,
需要在元素的后面加一个英文逗号分隔符,以防止与表达式中的小括号混淆。这是因为小括号既可以表示元组,又可以表示表达式中的优先级算符,这就容易产生歧义。
2、 元组的访问
元组的访问和列表相同,可以直接使用下标索引访问元组中的单个数据项,也可以使用截取运算符访问子元组。访问运算符包括“[]”和“[:]”运算符,用于访问元组中的单个数据项,或者一个子元组。
3、 如何更新元组
元组是不可修改类型,虽然在程序运行过程中无法对元组的元素进行插入和删除运算。但元组可以通过再构造一个新的元组替换旧的元组,来实现元素的插入和删除
4、 元组的合并
可以把多个元组合并成一个元组,合并后的元组元素顺序保持不变。合并后的元组为一个新的元组,原有的元组保持不变。
5、 元组的遍历
元组的遍历方式和列表相同,都是应用for循环语句遍历元组的元素。
6、 操作元组的常用方法
和列表一样,适用于列表的方法也同样适用于元组的操作。但由于元组的不可修改特性,用于列表的排序、替换、添加等方法,在元组中不能使用。可以使用的主要方法有计算元组个数、求元组中最大值、求元组中最小值等方法。
7、 元组的不可修改特性
元组的不可修改特性可能会让元组变得非常不灵活,因为元组作为容器对象,很多时候需要对容器的元素进行修改,这在元组中是不允许的。元组可以说是列表数据的一种补充,数据的不可修改性在程序设计中也是非常重要的。例如,当需要将数据作为参数传递给API,但不希望API修改参数时,就可以传递一个元组类型;再如,当需要定义一组Key时,也可以采用元组类型。因此可以说元组和列表是互为补充的数据类
#字符串
Format
tpl="I am {:s},age{:d}".format("Leo",18)
# *号的使用:引用元组或者引用列表
tpl="I am {:s},age{:d}".format(*["Leo",10])
# **号的使用:引用字典
tpl="I am {name},{age}".format(**{"name":"Leo","age":18})