python 学习笔记(3)数据类型2 (元组(tuple),集合,字典)
2013-05-06 11:49
861 查看
声明:本文系本人学习python3总结,如有侵权等,请及时告知;
欢迎转载:请保留http://blog.csdn.net/kevinx_xu/article/details/8889772
1、元组
元组有点类似C中的枚举型,但是又别于枚举行,在C中的枚举型都是整形,在python中元组,可以是任何类型,但是元组一旦创建,不能增加,不能删除,不能修改,元组 是不可变的列表。1) 元组的定义方式和列表相同,除了整个元素的集合都用圆括号,而不是方括号闭合。
tuple= (1,2,3,“test”,"hello")
2) 和列表一样,元组的元素都有确定的顺序。元组的索引也是以零为基点的,和列表一样,因此非空元组的第一个元素总是 tuple[0] 。
3)负的索引从元组的尾部开始计数,这和列表也是一样的。
4) 和列表一样,元组也可以进行切片操作。对列表切片可以得到新的列表;对元组切片可以得到新的元组。
5)元组和列表的主要区别
元组不能进行修改。用技术术语来说,元组是 不可变更 的。从实践的角度来说,没有可用于修改元组的方法。列表有像 append()、 extend()、 insert()、remove() 和 pop() 这样的方法。这些方法,元组都没有。可以对元组进行切片操作(因为该方法创建一个新的元组),可以检查元组是否包含了特定的值(因为该操作不修改元组)
6)元组的特点及使用
(1) 无法向元组添加元素。元组没有 append() 或 extend() 方法。
(2)不能从元组中删除元素。元组没有 remove() 或 pop() 方法。
(3)可以 在元组中查找元素,由于该操作不改变元组。
(4)还可以使用 in 运算符检查某元素是否存在于元组中。
7)元组优点
• 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。
• 对不需要改变的数据进行“写保护”将使得代码更加安全。使用元组替代列表就像是有一条隐含的 assert 语句显示该数据是常量,特别的想法(及特别的功能)必须重写。
• 一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。
8)元组与列表之间的转换
list(tuple)将元组转换为列表
tuple(list)将列表转换为元组
9)注意:
(1)在布尔类型上下文环境中,空元组为假值。
(2) 任何至少包含一个上元素的元组为真值。
(3) 任何至少包含一个上元素的元组为真值。元素的值无关紧要。不过此处的逗号起什么作用呢?
(4) 为创建单元素元组,需要在值之后加上一个逗号。没有逗号,Python 会假定这只是一对额外的圆括号,虽然没有害处,但并不创建元组。
2、同事赋多个元素值
a_val={}/()/[]{}/()/[]=a_val同时赋多值可发生在多种类型之间,但是在使用的时候,需要谨慎。
range()
函数是一个迭代器
range(10),返回0~10
的一堆值
range(20,100)返回20~100的一堆数值
使用for i in range(0,n):
就是C
中的for(i=0; i<n; i++)
在python中的for语句比C的更加灵活
fori in [1,2,3]:
printi;
fori in (1,2,3,54):
printi
3、集合
注:集合是无序的要创建空集合,可不带参数调用 set() 。
将列表转化为集合set = set(list);
集合set 是装有独特值的无序“袋子”。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算。
1)要创建只包含一个值的集合,仅需将该值放置于花括号之间。({})。
2)实际上,集合以 类 的形式实现,但目前还无须考虑这一点。
3)要创建多值集合,请将值用逗号分开,并用花括号将所有值包裹起来。
eg:s = {1,2}
4)集合操作
增加成员
set.add()增加一个元素到集合中
试图添加一个集合中已有的值,将不会发生任何事情。将不会引发一个错误;只是一条空操作。
set.update()将传入的无论何种类型的集合/列表/元组等并如集合中;
删除成员:
set.discard(member)
set.remove()
set.pop()
从集合中删除存在的一个成员;
1. discard() 接受一个单值作为参数,并从集合中删除该值。
2. 如果针对一个集合中不存在的值调用 discard() 方法,它不进行任何操作。不产生错误;只是一条空指令。
3. remove() 方法也接受一个单值作为参数,也从集合中将其删除。
4. 区别在这里:如果该值不在集合中,remove() 方法引发一个 KeyError 例外。
5.set.pop()会联想到list.pop()对于set个元素没有顺序,因此调用pop的时候删除的是随机的一个成员,对于list则是从最后一个开始删除;
集合的运算
a_set= {1,2,3}
b_set=(1,2,3,4,5,6)
并集:
a_set| b_set
a_set.union(b_set)
union() 方法返回一个新集合,其中装着 在两个 集合中出现的元素。
交集:
a_set& b_set
a.set.intersection(b_set)
intersection() 方法返回一个新集合,其中装着 同时 在两个集合中出现的所有元素。
补集:
a_set - b_set
a_set.difference(b_set)
difference() 方法返回的新集合中,装着所有在 a_set 出现但未在 b_set 中的元素。
互补集:
存放两个集合中互不相同的一些元素;
c_set= (a-b)
c_set.update(b-a);
a_set.symmetric_difference(b_set)
symmetric_difference() 方法返回一个新集合,其中装着所有 只在其中一个 集合中出现的元素。
1. a_set 与 b_set 的对称差分 看起来 和b_set 与 a_set 的对称差分不同,但请记住:集合是无序的。任何两个包含所有同样值(无一遗漏)的集合可认为是相等的。
2. 而这正是这里发生的事情。不要被 Python Shell 对这些集合的输出形式所愚弄了。它们包含相同的值,因此是相等的。
3. 对两个集合的 Union[并集]操作也是对称的。
4. 对两个集合的 Intersection[交集]操作也是对称的。
5. 对两个集合的 Difference[求差]操作不是对称的。这是有意义的;它类似于从一个数中减去另一个数。操作数的顺序会导致结果不同。
子集:
如果a_set - b_set =None
则a_set为b_set的子集;
b_set
为a_set的超集;
bool对结合真假的判断;
1. 在布尔类型上下文环境中,空集合为假值。
2. 任何至少包含一个上元素的集合为真值。
3. 任何至少包含一个上元素的集合为真值。元素的值无关紧要。
4、字典
字典 是键值对的无序集合。向字典添加一个键的同时,必须为该键增添一个值。1)创建字典
dic= {'a':1, 'b':2}
字典由两部分组成, 键值:内容
键值和内容可以为任何类型;
2)可以通过键获取值,但不能通过值获取键;
3)字典没有预定义的大小限制。可以随时向字典中添加新的键值对,或者修改现有键所关联的值
(1)
修改字典内容
根据关键字去修改
dic['a']= 2;
(2)增加字典成员
dic['c']= 3
注意:
(1) 在字典中不允许有重复的键。对现有的键赋值将会覆盖旧值。
(2) 可随时添加新的键值对。该语法与修改现有值相同。
(3) 字典项按顺序出现是个巧合;现在它们不按顺序出现同样也是个巧合。
(4)
对既有字典键进行赋值只会用新值替代旧值。
(5) 字典键是区分大小写的,因此该语句创建了一组新的键值对,而不是覆盖既有的字典项。对你来说它们可能是一样的,但对于 Python 而言它们是完全不同的。
4)字典的数据类型
字典并非只能用于字符串。字典的值可以是任何数据类型,包括整数、布尔值、任何对象,甚至是其它的字典。而且就算在同一字典中,所有的值也无须是同一类型,您可根据需要混合匹配。字典的键要严格得多,可以是字符串、整数和其它一些类型。在同一字典中也可混合、匹配使用不同数据类型的键。
5)bool上下文字典真假
(1) 在布尔类型上下文环境中,空字典为假值。
(2) 至少包含一个键值对的字典为真值。
6)删除字典成员dic.pop()
deldic['key']
7)字典排序
dic= sorted(dic)
5、None 类型
类似C语言的NULLNone 是 Python 的一个特殊常量。它是一个 空 值
None 是唯一的空值。它有着自己的数据类型(NoneType)。可将 None 赋值给任何变量,但不能创建其它 NoneType 对象。所有值为 None 变量是相等的。
在 布尔类型上下文环境中, None 为假值,而 not None 为真值。
not相当于C中的!
数据类型总结
对于数据类型中bool,None的话,很容易理解,就是对真假的判断,及对变量赋值对于列表,元组,字典,集合这几个都相似,操作方法也不尽相同,具体使用结合
dir() 和help()进行查看使用,那么多的方法,记住也不太现实;
相关文章推荐
- Python学习笔记(9)-列表list、元组tuple、字典dict、集合set
- Python学习笔记二:列表、字典、元组、集合 简介
- Python学习笔记--表list, 元组tuple, 字典dict
- Python学习笔记---元组(tuple)、列表(list)、字典(dict)
- Python学习笔记ucas(lecture2)数据结构(字符串、列表、元组、字典、集合)
- Python学习笔记———列表(list)、元组(tuple)、字典(dict)
- Python3学习笔记【基础3--list,tuple,if条件判断,for/while循环,dict字典,set集合】
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
- 【python】特色数据类型——元组(列表、元组、字典、集合)(6)
- Python学习笔记3-Python元组、数组、字典集合的操作
- (python学习笔记)1 元组、集合、字典
- Python学习笔记3-Python元组、数组、字典集合的操作
- Python3组合数据类型(元组、列表、集合、字典)语法
- python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典
- 【python】特色数据类型——字典(列表、元组、字典、集合)(7)
- Python 学习 (一) python的基本数据类型 元组 列表 字典
- 【python学习笔记】Python数据结构(列表,元组,字典,集合)
- python实操(5):python数据类型及常用操作,数字、字符串、元组、列表、字典、集合
- Python 学习笔记 -- 变量、元组、列表、字典和集合
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)