栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python组合数据类型(第四章)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python组合数据类型(第四章)

集合

      集合(set)是python2.4引入的一种类型,集合常量用大括号表示,例如{1,2,3}。集合中的元素具有唯一、无序和不可改变特点,集合支持数学理论中的各种运算。

     **集合对象支持求长度、判断包含、求差集、求并集、求交集、求对称差和比较邓运算,代码如下:

set1 = {1, 2, 'a', 'bc'}
print(len(set1))  # 求长度:计算集合中元素的个数  4 
print('a' in set1)  # 判断包含:判断集合是否包括数据  True

set2 = {1, 'a', 5}
print(set1 - set2)  # 求差集:用属于set1但不属于set2的元素创建新集合  {2, 'bc'}
print(set1 | set2)  # 求并集:用set1、set2两个集合中的所有元素创建新集合  {1, 2, 5, 'a', 'bc'}
print(set1 & set2)  # 求交集:用同时属于set1和set2的元素创建新集合  {1, 'a'}
print(set1 ^ set2)  # 求对称差:用属于set1但不属于set2以及属于set2但不属于set1的元素创建新集合  {2, 5, 'bc'}
print(set1 < set2)  # 比较:判断子集和超集的关系,x是y的子集时返回True,否则返回False  False

 ***集合对象元素的值不支持修改,但可以复制集合,或为集合添加和删除元素,代码如下:

x = {1, 2}
print(x.copy())  # 复制集合对象
x.add('abc')  # 为集合添加一个元素
x.update({10, 20})  # 为集合添加多个元素
x.remove(10)  # 从集合中删除指定元素,删除不存在元素时会报错
x.discard(15)  # 移除元素
print(x.pop())  # 从集合中随机删除一个元素,并返回该元素 1
x.clear()  # 删除集合中的全部元素  set()

列表

   

列表常量用方括号表示,例如,[1,2,'abc'],也可以使用list()函数来创建,列表的主要特点如下:

  1. 列表可以包含任意类型的对象:数字、字符串、列表、元组或其他对象。
  2. 列表是一个有序序列,与字符串类似,可通过位置偏移量执行索引和分片操作。
  3. 列表是可变的。列表的长度可变,即可添加或删除列表成员。列表元素的值也可改变。
  4. 每个列表元素存储的是对象的引用,而不是对象本身,类似于C/C++的指针数组。

列表基本操作包括:创建列表、求长度、合并、重复、迭代、关系判断、索引和分片等。

# 创建列表
print([1, 2, 3, 4, ('a', 'b'), [12, 34]])  # [1, 2, 3, 4, ('a', 'b'), [12, 34]]
print(list('abcd'))                        # ['a', 'b', 'c', 'd']
print(list(range(-2, 3)))                  # [-2, -1, 0, 1, 2]
print(list((1, 2, 3)))                     # [1, 2, 3]
list1 = [item + 10 for item in range(5)]
print(list1)                               # [10, 11, 12, 13, 14]

# 求长度
print(len([1, 2, 3, 4, ('a', 'b'), [5, 6]]))  # 6

# 合并
print([1, 2] + ['abc', 20])

# 重复
print([1, 2] * 5)

# 关系判断
print(2 in [1, 2, 3])

# 索引
list1 = [1, 2, 3, ['a', 'b', 'c']]
list1[2] = 100
print(list1[0], list1[2], list1[-1])

# 分片,与字符串类似,可通过分片来获取列表中的连续多个数据,也可以通过分片将连续多个数据替换成新的数据。
list1 = list(range(10))
print(list1[2:5])      # [2, 3, 4]
print(list1[2:])       # [2, 3, 4, 5, 6, 7, 8, 9]
print(list1[:5])       # [0, 1, 2, 3, 4]
print(list1[3:10:2])   # [3, 5, 7, 9]
print(list1[10:3:-2])  # [9, 7, 5]
list1[2:5] = 'abc'
print(list1)           # [0, 1, 'a', 'b', 'c', 5, 6, 7, 8, 9]
list1[2:5] = [10, 20]
print(list1)           # [0, 1, 10, 20, 5, 6, 7, 8, 9]

元组

元组可以看作是不可变的列表,它的使用与字符串类似。元组常量用圆括号表示,例如:(1,2)、('a','b','c'),也可以使用tuple()方法来创建元组对象。元组的主要特点如下:

  • 元组可包含任意类型的对象。
  • 元组是有序的,元组中的对象可通过位置进行索引和分片。
  • 元组的大小不能改变,即不能为元组添加对象,也不能删除元组中的对象。
  • 元组中存储的是对象的引用,而不是对象本身。

元组的基本操作包括:创建元组、求长度、合并、重复、迭代、关系判断、索引和分片等。

# 创建元组
print((2,))  # 包含一个对象的元组,不能缺少逗号  (2,)
print(tuple('abcde'))  # 参数为可迭代对象  ('a', 'b', 'c', 'd', 'e')
print(tuple(item * 2 for item in range(5)))  # 使用解析结构创建元组  (0, 2, 4, 6, 8)

# 求长度
print(len((1, 2, 3, 4, 5)))  # 5

# 合并
t1 = (1, 2) + ('ab', 'cd') + (2.45,)  # (1, 2, 'ab', 'cd', 2.45)
print(t1)

# 重复
print((1, 2) * 3)  # (1, 2, 1, 2, 1, 2)

# 关系判断
print(2 in t1)  # True

# 索引和分片
t2 = tuple(range(10))  # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(t2[1])           # 1
print(t2[-1])          # 9
print(t2[2:5])         # (2, 3, 4)
print(t2[2:])          # (2, 3, 4, 5, 6, 7, 8, 9)
print(t2[:5])          # (0, 1, 2, 3, 4)
print(t2[1:7:2])       # (1, 3, 5)
print(t2[7:1:-2])      # (7, 5, 3)

# 统计指定值出现的次数,如果不包含指定值时,返回0
t3 = (1, 2) * 4
print(t3.count(1))  # 4

# 查找指定范围内元素所在的索引
print(t3.index(2))  # 1
print(t3.index(2, ))  # 1
print(t3.index(2, 2, 7))  # 3

字典

字典是一种无序的映射集合,包含一系列的键:值对。字典常量用大括号表示,例如,{'name':'John','age':25,'sex':'male'},也可以使用dict()函数来创建。其中,字符串name、age和sex为键,字符串John和sex以及数字25为值。字典的主要特点如下:

  • 字典的键名称通常采用字符串,也可以用数字、元组等不可变的类型。
  • 字典的值可以是任意类型。
  • 字典也可称为关联数组或散列表,它通过键映射到值。字典是无序的,它通过键来访问映射的值,而不是通过位置来索引。
  • 字典属于可变映射,可修改键映射的值。
  • 字典长度可变,可为字典添加或删除键:值对。
  • 字典可以任意嵌套,即键映射的值可以是一个字典。
  • 字典存储的是对象的引用,而不是对象本身。

字典的基本操作包括创建字典、求长度、关系判断和索引等。

# 创建字典
dict1 = {'name': 'John', 'age': 25, 'sex': 'male'}  # 字典常量
dict2 = {'book': {'Python编程': 100, 'C++入门': 99}}  # 嵌套字典
dict3 = {1: 'onw', 2: 'two'}  # 数字作为键
dict4 = {(1, 3, 5): 10, (2, 4, 6): 50}  # 元组作为键
dict5 = dict(name='Tom', age=25)  # 使用赋值格式的“键:值”对创建字典 {'name': 'Tom', 'age': 25}
dict6 = dict([('name', 'Tom'), ('age', 25)])  # 使用包含“键:值”对元组的列表创建字典 {'name': 'Tom', 'age': 25}
dict7 = dict.fromkeys(['name', 'age'])  # 创建无映射值的字典,默认值为None {'name': None, 'age': None}
dict8 = dict.fromkeys(['name', 'age'], 0)  # 创建值相同的字典 {'name': 0, 'age': 0}
dict9 = dict.fromkeys('abc')  # 使用字符串创建无映射值的字典 {'a': None, 'b': None, 'c': None}
dict10 = dict.fromkeys('abc', 10)  # 使用字符串和映射值创建字典 {'a': 10, 'b': 10, 'c': 10}
dict11 = dict.fromkeys('abc', (1, 2, 3))  # {'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}

# 求长度
print(len({'name': 'John', 'age': 25, 'sex': 'male'}))  # 返回字典长度,即“键:值”对的个数

# 关系判断 - 判断字典是否包含某个键
print('name' in {'name': 'John', 'age': 25, 'sex': 'male'},  # True
      'date' in {'name': 'John', 'age': 25, 'sex': 'male'})  # False

# 索引
dict13 = {'book': {'Python编程': 100, 'C++入门': 99}, 'publish': '人民邮电出版社'}
print(dict13['book'])  # {'Python编程': 100, 'C++入门': 99}
print(dict13['book']['Python编程'])  # 100
dict13['publish'] = '清华大学出版社'  # 通过索引修改映射值
dict13['phone'] = 12345678900  # 为不存在的键赋值,为字典添加“键:值”对
del dict13['book']['C++入门']  # 删除“键:值”对

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号