Python基础语法三组合数据类型
一、列表(Lists)
列表属于Python中的序列类型,它是任意对象的有序集合,通过 “ 位置 ”或者 “ 索引 ” 访问其中的元素,它具有可变对象、可变长度、异构和任意嵌套的特点。
列表里第一个元素的为值或者索引是从 “ 0 ” 开始,第二个元素则是 “ 1 ”,一次类推。
列表的元素放置在方括号 [] 中,以逗号来分隔各元素;
格式如下:
listname = [元素1,元素2,元素3,...,元素n ]
1
1
listname = [元素1,元素2,元素3,...,元素n ]
例:
sample_list1 = [1,2,3,4]
sample_list2 = ["P","y","t","h","o","n"]
sample_list3 = ['Python','sample','list','for','your','reference']
print(sample_list1)
print(sample_list2)
print(sample_list3)
6
1
sample_list1 = [1,2,3,4]
2
sample_list2 = ["P","y","t","h","o","n"]
3
sample_list3 = ['Python','sample','list','for','your','reference']
4
print(sample_list1)
5
print(sample_list2)
6
print(sample_list3)
1.1 列表中允许有不同数据类型的元素,但最好使用相同的数据类型。
1.2 列表可以嵌套使用。(即列表中包含列表元素)
1.3 通过使用 “ 位置 ” 或者 “ 索引 ” 来访问列表中的值,“ 位置 ” 或者 “ 索引 ” 是从 0 开始。
1.4 可以在方括号中使用 “ 负整数 ” ,如 sample_list[-2],表示从列表右侧开始倒数2个的元素。
1.5 方括号中用冒号分开的两个整数来截取列表中的元素。如:sample_list2[ 2:4 ],可获取第3个和第4个元素,(包左不包右)
1.6 对列表元素进行修改时,可以使用赋值语句;
1.7 删除列表元素,可以使用 del 语句;del listname[索引]
在不关心元素索引时,可以使用内置方法 remove() 来删除指定的值。如:listname.remove('值')
1.8 清空列表,可以采用重新创建一个与原列表同名的空列表,如 listname = []
删除整个列表也可以使用 del 语句, del listname
1.9 列表中内置函数与其他方法:
函数 | 说明 | |
len(listname) | 返回列表的元素数量 | |
max(listname) | 返回列表中元素中最大值 | |
min(listname) | 返回类别中元素的最小值 | |
list(tuple) | 将元组转换为列表 | |
listname.append(元素) | 添加新的元素在列表末尾 | 增 |
listname.count(元素) | 统计该元素在列表中出现的次数 | 查 |
listname.extend(序列) | 追加另一个序列类型中的多个值 | 增,改 |
listname.index(元素) | 从列表中找出某个值第一个匹配元素的索引位置 | |
listname.insert(位置 , 元素) | 从列表中找出某个值第一个匹配元素索引的位置 | |
listname.pop([index=-1]) | 移除列表中的一个元素,并返回该元素的值 | |
listname.remove(元素) | 移除列表中的第一个匹配的某个值元素 | |
listname.reverse() | 将列表中的元素反向 | |
listname.sort(cmp = None, key= None, reverse=False) | 对列表进行排序 | |
listname.clear() | 清空列表 | |
listname.copy() | 复制列表 |
二、元组(Tuples)
元组与列表一样,属于Python中的序列类型,它是任意对象的有序集合,通过 “ 位置 ” 或者 “ 索引 ” 访问其中的元素,它具有可变长度、异构和任意嵌套的特点,与列表不同的是:元组的元素是不可修改的。
格式:元素放在小括号里,元素之间用逗号隔开。
tuplename = ( 元素1,元素2,... ,元素n )
2.1 元组可以为空;
2.2 为避免歧义,当元组中只有一个元素时,必须在改元素后面加上逗号,否则括号会被当做运算符。(sample_tuple = ( 15, ))
2.3 元组可以嵌套使用;
2.4 可以使用索引来访问元素;
2.5 支持切片操作;
sample_tuple[:]:取元组所有元素;
sample_tuple[4:]:表示取元组索引为 3 后面所有的元素;
sample_tuple[0:4:2]:表示元组sample_tuple索引为 0 到 4 的元素,每隔一个元素取一个。
2.6 删除元组
del sample_tuple
2.7 内置函数
函数 | 说明 |
len(tuplename) | 返回元组元素的数量 |
max(tuplename) | 返回元组中元素的最大值 |
min(tuplename) | 返回元组中元素的最小值 |
tuple(listname) | 将列表转换为元组 |
三、字典(Dictionaries)
字典属于映射类型,它通过 键值对实现元素存取,具有无序、可变长度、异构、嵌套和可变类型容器等特点。
格式:键和值有单引号,他们成对出现,中间用冒号分割,每对直接用逗号分割,并放置在花括号中。
dictname = { '键1':'值1','键2':'值2','键3':'值3'}
1
1
dictname = { '键1':'值1','键2':'值2','键3':'值3'}
3.1 同一个字典中,键应该是唯一的;
3.2 同一个键被两次或多次赋值,只有最后一次赋值时有意义的。
sample_dict = {'Model': 'PC', 'Brand': 'Lenovo', 'Brand': 'Thinkpad'} # Brand 赋值为 Thinkpad
1
1
sample_dict = {'Model': 'PC', 'Brand': 'Lenovo', 'Brand': 'Thinkpad'} # Brand 赋值为 Thinkpad
3.3 支持嵌套
3.4 取字典中的值: dictname[键]
3.5 使用包含嵌套的字典:
print ("sample_dict5['office']: ", sample_dict5['office'])
sample_dict5['office']: {'room1': 'Finance', 'room2': 'logistics'} #输出键为office 的值
3
1
print ("sample_dict5['office']: ", sample_dict5['office'])
2
sample_dict5['office']: {'room1': 'Finance', 'room2': 'logistics'} #输出键为office 的值
3
3.6 修改字典中的值 : 直接赋值即可。
3.7 向字典末尾追加新的键值,直接赋值即可
3.8 删除元素和字典
del dictname[键]:删除字典中的值
del dictname :删除字典
3.9 内置函数和方法
函数 | 说明 |
len(distname) | 计算键的总数 |
str(distname) | 输出字典 |
type(distname) | 返回字典类型 |
方法 | 说明 |
dictname.clear() | 删除字典所有元素,清空字典 |
dictname.copy() | 以字典类型返回某个字典的浅复制 |
dictname.fromkeys(seq[,value]) | 创建一个新字典,以序列中的元素做字典的键,值为字典所有键对应得初始值 |
dictname.get(value , default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dictname | 如果键在字典dict里返回true,否则返回false |
dictname.items() | 以列表返回可遍历的(键、值)元组数组 |
ditname.keys() | 将一个字典所有的键生成列表并返回 |
dictname.setdefault(value,default=None) | 和dictname.get()类似,不同点是,如果键不存在与字典中,将会添加键并将值设为default |
dictname.update(dictname) | 把字典dictname的键 / 值对更新到dictname里 |
dictname.values() | 以列表返回字典中的所有值 |
dictname.pop(key[,default]) | 弹出字典给定键所对应的值,返回值为被删除的值。键值必须给出,否则,返回default |
dictname.popitem() | 弹出字典中的一对键和值,并删除 |
四、集合(set)
集合是一种集合类型,可以理解为就是数学里的集合。它是一个可以表示任意元素的集合,它的索引可以通过另一个任意键值的集合进行,它可以无序排列、哈希。
集合分为两种:可变集合(set),不可变集合(frozenset)。
可变集合,在被创建后,可以通过很多种方法被改变,例如add(),update() 等。
不可变集合,由于其不可变特性,它是可哈希(hashable,意味一个对象在其生命周期中,其哈希值不会改变,并可以和其他对象做比较),也可以作为一个元素被其他集合使用,或者作为字典的键。
创建集合:使用大括号 {} 或者 set() 创建非空集合
sample_set = { 值1, 值2, 值3, }
1
1
sample_set = { 值1, 值2, 值3, }
4.1 创建空集合是必须使用 set() ,格式:emptyset = set()
4.2 集合中的元素不能保存重复的元素;
4.3 集合是无序的,因此没有索引或键来指点调用某个元素,单可以使用for循环输出集合中的元素;
4.4 添加元素,可以是用 add() 方法,即把需要添加的内容作为一个元素(整体),加入到集合中,格式为:setname.add()
添加多个元素可以用 update() 方法,将另一个类型中的元素拆分后,添加到原集合中
4.5 集合可以被用来做成员测试,使用 in 或 not in 检查某个元素是否属于某个集合;
4.6 集合可以做集合运算,求差集(difference),并集(union)、交集(intersection)、对称差集(symmetric difference)
4.7 删除元素和集合:setname.remove()
del setname
4.8 集合的方法
方法 | 说明 |
len(s) | 返回集合元素的个数 |
x in s | 测试 X 是否是集合 s 中的元素,返回 True 或 False |
x not in s | 如果 x 不在集合 s 中,返回True,否则返回 False |
s.isdisjoint(otherset) s <= otherset | 当集合 s 与另一个集合 otherset 不相交时,返回 True,否则返回 False |
s < otherset | 集合 s 是另一个集合otherset 的真子集,返回 True,否则返回 False |
s.isuperset(otherset) ss >= otherset | 集合 s 是另个一集合otherset 的父集,返回True,否则返回 False |
s.union(*othersets) 或 s | otherset1 | otherset2 | 返回 s 和othersets的并集,包含有set和othersets的所有元素 |
s.intersection(*othersets) s & otherset1 & otherset2 | 返回 s 和othersets的交集,包含在 s 并且也在othersets中的元素 |
s.difference(*othersets) s-otherset1 - otherset2... | 返回 s 与othersets的差集,只包含在 s 中但不在othersets中的元素 |
s.symmetric_difference(otherset) set^otherset | 返回 s 与otherset的对称差集,只包含在 s 中但不在othersets中,和不在ss中但在othersets中的元素 |
s.copy() | 返回集合 s 的浅拷贝 |
s.update(*othersets) 或 s |= otherset1 | otherset2... | 将另外的一个集合或多个集合元素,添加到集合s 中 |
s.intersecetion_update(*othersets)或set &= otherset1 & otherset2 | 在 s 中保留它与其他集合的交集 |
s.difference_update(*othersets)或 s -= otherset1 | otherset2 | 从 s 中移除它与其他集合的交集,保留不在其他集合中的元素 |
s.symmetric_difference_update(otherset) 或 s ^= otherset | 集合 s 与另一集合otherset交集的补集,将结果返回到 s |
s.add(元素) | 向集合 s 中添加元素 |
s.remove(元素) | 从集合 s 中移除元素,如果该元素不在 s 中,则报告KeyError |
s.discard(元素) | 从集合 s 中移除元素,如果该元素不在 s 中,则什么都不做 |
s.pop() | 移除并返回集合 s 中的任一元素,如果 s 为空,则报告KeyError |
s.clear() | 清空集合 s 中所有元素 |
不可变数据类型有四个:数字(Numbers)、字符串(Strings)、元组(Tuples)、集合(Set);
元素可变的数据类型有两个:列表(Lists)、字典(Dictionary)。其中,列表是Python 中使用最为频繁的数据类型之一。
一切语言的基础就是数据类型
学习,生活要不停的提高提高,哪怕一点点,也不要停。