Python中组合数据类型

1.常见的组合类型有3大类:

  • 集合类型:是一个元素集合,元素之间无序,相同元素在集合中唯一存在。集合(set)
  • 序列类型:是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。序列类型的典型代表是字符串(str)、列表(list)、元组(tuple)
  • 映射类型:是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value).映射类型的典型代表是字典(dict)

 2.集合类型概述:

        Python语言中的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。用大括号{}表示,它没有索引和位置的概念,集合中的元素可以动态增加或删除。由于集合元素独一无二,使用集合类型能够过滤掉重复类型。

s={1,2,2,6,3,2,1,8,8}
print(s)
#运行结果:{1, 2, 3, 6, 8}

集合类型有4个操作符,交集&,并集|,差集-,补集^,操作逻辑与数学定义相同。

操作符的运算描述
S-T返回一个新集合包括在集合S中但不在集合T中的元素
S&T返回一个新集合包括同时在集合S和集合T中的元素
S^T返回一个新集合包括集合S和集合T中的非共同元素
S|T返回一个新集合包括集合S和集合T中的所有元素

s={111,"python",123}
t={111,1010}
print(s-t)
print(s&t)
print(s|t)
print(s^t)
'''运行结果:
{123, 'python'}
{111}
{1010, 123, 'python', 111}
{123, 1010, 'python'}
'''

 3.集合类型有一些常用的操作函数或方法:

函数或方法描述
S.add(x)如果数据域x不在集合S中,将x增加到s
S.remove(x)如果x在集合S中,移动该元素;不在产生KeyError异常
S.clear()移除S中所有数据域
len(S)返回集合S元素个数
x in S如果x是S的元素,返回True,否则返回Flase
x not in S如果x不是S的元素,返回True,否则返回Flase

set()函数将其他的组合数据类型转换成集合类型,返回结果是一个无重复且排序任意的集合。set()函数也可以生成空集合变量。 

s={111,"python",123}
s.add('abc')
print(s)
s.remove(111)
print(s)
len(s)
print(123 in s)
print(111 in s)
s.clear()
'''print(s)
运算结果:
{'python', 'abc', 123, 111}
{'python', 'abc', 123}
True
False
set()
'''

4.列表类型概述:

列表类型用括号[ ]表示,列表没有长度限制,元素类型可以不同。通过list(x)函数将集合或字符串类型转换成列表类型。

列表属于序列类型,所以列表类型支持序列类型对应的操作

序列类型有一些通用的操作符和函数
操作符描述
x in s如果x是s的元素,返回True,否则返回Flase
x not in s如果x不是s的元素,返回True,否则返回Flase
s +t连接s和t
s *n或n*s将序列s复制n次
s[i]索引,返回序列的第i个元素
s[i:j]切片,返回序列s到第i到第j个元素的子序列(不包含第j个元素)
s[i:j:k]步骤切片,返回包括序列s到第i到第j个元素以k为步长的子序列
len(s)序列s的元素个数(长度)
min(s)序列s中的最小元素
max(s)序列s中的最大元素
s.index(x)序列s中第一次出现元素x的位置
s.count(x)序列s中元素x出现的总次数

 

                                                列表类型14个常用函数或方法 

print(list((3,5,7,9,11)))               #将元组转换为列表
# [3, 5, 7, 9, 11]
print(list(range(1, 10, 2)))             #将range对象转换为列表
# [1, 3, 5, 7, 9]
print(list('hello world'))               #将字符串转换为列表
# ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(list({3,7,5}))                     #将集合转换为列表
# [3, 5, 7]
print(list({'a':3, 'b':9, 'c':78}))      #将字典的“键”转换为列表
# ['a', 'c', 'b']
print(list({'a':3, 'b':9, 'c':78}.items()))#将字典的“键:值”对转换为列表
# [('b', 9), ('c', 78), ('a', 3)]
x = list()                        #创建空列表
print(x)
aList=[1,2,3,4,5,6,7]
print(aList)
print(aList[0],aList[len(aList)-1])
print(aList[-1],aList[-len(aList)])
print(aList[2:6])
print(aList[2:6:2])
print(aList[2:6:2]*2)
print(aList[2:6]+aList[2:6:2])
print(aList[:4],aList[4:])
print(aList[-1::-1])

5.向列表里添加新元素 

1 使用aList.append(obj)方法添加元素。obj将被添加到aList尾部。如果obj也是一个序列,则该序列会整体被当做一个元素添加到aList列表的尾部

2 使用aList.extend(obj)方法添加元素。obj将被添加到aList的尾部。如果obj也是一个序列,该序列中所有的元素会被当成不同的元素,依次添加到aList列表尾部

3 使用aList.insert(index, obj)方法添加元素。obj将被添加到aListindex位置上。如果obj是一个序列,该序列会被当做一个元素添加到aList列表的index位置

aList=[1,2,3,4,5]
aList.append(6)
print(aList)
exList=[7,8,9]
aList.extend(exList)
print(aList)
aList.append(exList)
print(aList)
aList.insert(3,3.5)
print(aList)
'''运行结果:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, [7, 8, 9]]
[1, 2, 3, 3.5, 4, 5, 6, 7, 8, 9, [7, 8, 9]]'''

 6.向列表中删除元素

1 使用del aList[index]方法,删除列表中索引号为index的那个元素

2 使用del aList[index1 : index2]方法,删除列表中从索引号index1开始,到索引号index2 1结束,之间的所有元素。   

3 使用aList.pop()方法,可以出栈列表中的最后一个元素。运行pop()命令之后,返回值为列表最后一个元素,aList的最后一个元素从列表中删除

4 使用aList.remove(obj)方法,可以删除与obj指定值相同的第一个元素。如果在列表中找不到obj值,就会发生一个ValueError错误。

5 使用aList.clear()方法,可以删除aList列表中所有的元素,仅仅保留一个名为aList的空列表。

aList=[1,2,3,4,5,6,7]
del aList[3]
print(aList)
del aList[2:4]
print(aList)
print(aList.pop())
print(aList)
aList.remove(6)
print(aList)
aList.clear()
print(aList)
'''运行结果:
[1, 2, 3, 5, 6, 7]
[1, 2, 6, 7]
7
[1, 2, 6]
[1, 2]
[]'''

7.列表的索引:索引是列表的基本操作,用于获得列表的一个元素。使用中括号作为索引操作符,可以使用遍历循环对列表类型的元素进行遍历操作。

                        for 循环变量 in 列表变量:

                                语句块

 8.切片是列表的基本操作,用于获得列表的一个片段,即获得一个或多个元素。切片后的结果也是列表类型。

                切片的使用方式:

                                        列表或列表变量[N:M:K]

切片获取列表类型从N到M(不包含M)的元素组成新的列表。当K存在时,切片获取列表类型从N到M(不包含M)以K为步长所对应元素组成的列表。

9.元组的概述:

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号(),列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用括号隔开即可。元组是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。Python中元组采用逗号和圆括号(可选)来表示。一个元组可以作为另一个元组的元素,可以采用多级索引获取信息。

  •         元组属于不可变序列,不可以直接修改元组中元素的值,也无法为元组增加或删除元素。
    •         元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有remove()和pop()方法,也不支持对元组元素进行del操作,不能从元组中删除元素,而只能使用del命令删除整个元组。
    •         Python的内部实现对元组做了大量优化,访问速度比列表更快。如果定义了一系列常量值,主要用途仅是对它们进行遍历或其他类似用途,而不需要对其元素进行任何修改,那么一般建议使用元组而不用列表。
      •         元组在内部实现上不允许修改其元素值,从而使得代码更加安全,例如调用函数时使用元组传递参数可以防止在函数中修改元组,而使用列表则很难保证这一点。
creature = "cat", "dog", "tiger", "human"
print(creature)
# ('cat', 'dog', 'tiger', 'human')
color = ("red", 0x001100, "blue", creature)
print( color)
# ('red', 4352, 'blue', ('cat', 'dog', 'tiger', 'human'))
print(color[2])
# 'blue'
print(color[-1][2])
# 'tiger'

10.字典概述:

列表与元组,在内存中是依次存放的,是有序排列的,元素能够通过索引顺序访问。字典不一样。字典(dictionary)是映射类型的序列结构,是一种无序的、可变的序列,如图7-3所示。它的元素以“键值对(key-value)”的形式存储。简单的说,是通过关键字,找到对应值。键的指向可以进行修改,值的存储可以被改变。

字典中元素的“键”可以是Python中任意不可变数据,例如整数、实数、复数、字符串、元组等类型等可哈希数据,但不能使用列表、集合、字典或其他可变类型作为字典的“键”。另外,字典中的“键”不允许重复,而“值”是可以重复的。

建立模式如下:

              {<1>:<1>, <2>:<2>, … , <n>:<n>}

由于大括号可以表示集合,因此字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。

Dcountry={"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
print(Dcountry)
# {'中国': '北京', '法国': '巴黎', '美国': '华盛顿'}

        创建一个字典,可以用一个标识符指代作为字典名,然后用大括号括起来一个一个的键值对,键与值之间用冒号隔开,每个键值对之间用英文逗号隔开。如:

  1 使用整数作为键,映射字符串。

  weekDayDic = {0:"Sun", 1:"mon", 2:"Tue", 3:"wed", 4:"Thu", 5:"Fri", 6:"Sat"}

  2 使用字符串作为键,映射数。

  scoresDic = {"语文": 90, "数学": 82, "英语": 79}

  3 可以创建空字典。

  emptyDic = { }

# 也可以使用内置类dict以不同形式创建字典。
x = dict()  #空字典
keys = ['a', 'b', 'c', 'd']
values = [1, 2, 3, 4]
dictionary = dict(zip(keys, values)) #根据已有数据创建字典
print(dictionary)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
d = dict(name="Dong",age=39)  #以关键参数的形式创建字典
aDict = dict.fromkeys(['name', 'age', 'sex'])#以给定内容为“键”,创建“值”为空的字典
print(aDict)
# {'age': None, 'name': None, 'sex': None}

                 ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        字典类型的操作

函数和方法

描述

<d>.keys()

返回所有的键信息

<d>.values()

返回所有的值信息

<d>.items()

返回所有的键值对(以元组形式)

<d>.get(<key>,<default>)

键存在则返回相应值,否则返回特定值

<d>.pop(<key>,<default>)

删除字典中指定键对应的键值对并返回被删除的值,指定的键如果不在字典中,则必须设置一个default值,否则会报错,此时返回的就是default值

dict={'name':'喀什大学','url':'www.ksu.edu.cn'}

dict.pop('name','no')

dict.pop('nama','no')

<d>.popitem()

随机从字典中取出一个键值对,以元组(key, value)形式返回

<d>.clear()

删除字典中的全部元素,执行clear()后原字典将变为空字典

<d>.copy( )

用于浅复制一个字典,返回一个具有相同键值对的新字典

del <d>[<key>]

删除字典中某一个键值对

<key> in <d>

如果键在字典中返回True,否则返回False

<d>.setdefault(key,value)

如果有此键就返回键的值,如果无此键就添加

<d>.update(args)

更新字典  d = dict(name='zhangsan',age=39,sex='man') t={0:1} d.update(t)

Dcountry={"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
print(Dcountry.keys())
# dict_keys(['中国', '美国', '法国'])
print(list(Dcountry.values()))
# ['北京', '华盛顿', '巴黎']
print(Dcountry.items())
# dict_items([('中国', '北京'), ('美国', '华盛顿'), ('法国', '巴黎')])
print('中国' in Dcountry)   #只对键进行判断
# True
print(Dcountry.get('美国', '悉尼')) #'美国'在字典中存在
# '华盛顿'
print(Dcountry.get('澳大利亚', '悉尼')) #'澳大利亚'在字典中不存在
# '悉尼'

 

Dcountry={"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
for key in Dcountry:
    print(key,Dcountry[key])
for key in Dcountry.keys():
    print(key,Dcountry[key])
for key,values in Dcountry.items():
    print(key,values)
for values in Dcountry.values():
    print(values)
for item in Dcountry.items():
    print(item)
dic={'counter':'柜台','stall':'收货摊','shelf':'货架','discount':'标价签'}
for item in dic.items():
    print(item[0])
    print(item[1])
'''中国 北京
美国 华盛顿
法国 巴黎
中国 北京
美国 华盛顿
法国 巴黎
中国 北京
美国 华盛顿
法国 巴黎
北京
华盛顿
巴黎
('中国', '北京')
('美国', '华盛顿')
('法国', '巴黎')
counter
柜台
stall
收货摊
shelf
货架
discount
标价签'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sklearn随机森林 测试 路面点云分类

一、特征5个坐标 坐标-特征-类别 训练数据 二、模型训练 记录分享给有需要的人&#xff0c;代码质量勿喷 import numpy as np import pandas as pd import joblib#region 1 读取数据 dir D:\\py\\RandomForest\\ filename1 trainRS filename2 .csv path dirfilename1file…

QT 中基于 TCP 的网络通信 (备查)

基础 基于 TCP 的套接字通信需要用到两个类&#xff1a; 1&#xff09;QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客户端建立连接。 2&#xff09;QTcpSocket&#xff1a;通信的套接字类&#xff0c;客户端、服务器端都需要使用。 这两个套接字通信类…

基于PicGo实现Typora图片自动上传GitHub

文章目录 一. 引言二. 原理三. 配置3.1 GitHub 设置3.2 下载配置 PicGo3.3 配置 Typora3.4 使用 一. 引言 Typora是一款非常好的笔记软件&#xff0c;但是有一个比较不好的地方&#xff1a;默认图片是存放在本地缓存中。这就会导致文件夹一旦被误删或电脑系统重装而忘记备份文件…

6.1810: Operating System Engineering 2023 <Lab4 traps: Traps>

一、本节任务 二、要点&#xff08;Traps and system calls&#xff09; 有三种事件会使 CPU 暂停当前的指令执行&#xff0c;并强制将控制转移到处理该事件的特殊代码中&#xff1a; 系统调用&#xff08;ecall&#xff09;&#xff1b;异常&#xff08;如非法指令&#xff…

VSCode之C++ CUDA入门:reduce的N+1重境界

背景 Reduce是几乎所有多线程技术的基础和关键&#xff0c;同样也是诸如深度学习等领域的核心&#xff0c;简单如卷积运算&#xff0c;复杂如梯度聚合、分布式训练等&#xff0c;了解CUDA实现reduce&#xff0c;以及优化reduce是理解CUDA软硬件连接点的很好切入点。 硬件环境&…

JVM 分析GC日志

GC日志参数 -verbose:gc 输出gc日志信息&#xff0c;默认输出到标准输出 -XX:PrintGC 输出GC日志。类似&#xff1a;-verbose:gc -XX:PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志&#xff0c;并在进程退出时输出当前内存各区域分配情况 -XX:PrintGCTimeStam…

【TiDB理论知识10】TiDB6.0新特性

新特性 Placement Rules in SQL 小表缓存 内存悲观锁 Top SQL TiDB Enterprise Manager 一 Placement Rules in SQL Placement Rules in SQL 之前会遇到的问题 比如 北京的业务需要访问 T2 和 T3表 &#xff0c;但是T3表的数据在纽约 纽约的业务需要问访T4 T5 T6表…

2023 金砖国家职业技能大赛网络安全省赛理论题样题(金砖国家未来技能挑战赛)

2023 金砖国家职业技能大赛网络安全省赛理论题样题&#xff08;金砖国家未来技能挑战赛&#xff09; 一、参加比赛的形式 团队参与&#xff0c;每队2名选手&#xff08;设队长1名&#xff09;。 二、项目项目阶段简介 项目由四个阶段组成&#xff0c;将按顺序完成。向参与者…

Notes数据直接在Excel中统计

大家好&#xff0c;才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》&#xff0c;因为今天我们正是使用REST API方式在Excel中查询和统计Notes数据。 不过首先你得知道一个OData协议&#xff0c;全名Open Data Protocol(…

Leetcode1038. 从二叉搜索树到更大和树

Every day a Leetcode 题目来源&#xff1a;1038. 从二叉搜索树到更大和树 解法1&#xff1a;中序遍历 观察示例 1&#xff0c;我们发现了规律&#xff1a; 二叉搜索树的中序遍历是一个单调递增的有序序列。 本题中要求我们将每个节点的值修改为原来的节点值加上所有大于它…

CSS——选择器、PxCook软件、盒子模型

1、选择器 1.1 结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素。 1.1.1 :nth-child&#xff08;公式&#xff09; 作用&#xff1a;根据元素的结构关系查找多个元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"…

编程过程中出现bug如何应对?

编程过程中出现bug如何应对&#xff1f; 1.找错误原因 如果完全不知道出错的原因&#xff0c;或者说存在着很多错误的有原因&#xff0c;----》控制变量法 例如&#xff0c;昨天我在使用torchrun 多卡并行一个程序的时候&#xff0c;出现了大量的bug, 于是我将报错信息放在网…

Java动态代理实现与原理详细分析

Java动态代理实现与原理详细分析 关于Java中的动态代理&#xff0c;我们首先需要了解的是一种常用的设计模式–代理模式&#xff0c;而对于代理&#xff0c;根据创建代理类的 时间点&#xff0c;又可以分为静态代理和动态代理。 1、代理模式 代理模式是常用的java设计模式&…

kafka学习笔记--基础知识概述

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…

Kafka 的消息格式:了解消息结构与序列化

Kafka 作为一款高性能的消息中间件系统&#xff0c;其消息格式对于消息的生产、传输和消费起着至关重要的作用。本篇博客将深入讨论 Kafka 的消息格式&#xff0c;包括消息的结构、序列化与反序列化&#xff0c;以及一些常用的消息格式选项。通过更丰富的示例代码和深入的解析&…

【Quasar】暗黑主题随系统切换部分组件无法随系统切换

问题描述 Quasar部分组件无法随系统切换主题 。 假如系统、Quasar主题为白天模式。Quasar设置主题随系统切换&#xff0c;当系统切换暗黑模式时&#xff0c;Quasar导航栏无法正常切换为暗黑模式&#xff0c;此时背景还是白天模式&#xff0c;如图 正常切换参考图 正常暗黑…

【musl-pwn】msul-pwn 刷题记录 -- musl libc 1.2.2

前言 本文不分析 musl libc 相关源码&#xff0c;仅仅为刷题记录&#xff0c;请读者自行学习相关知识&#xff08;看看源码就行了&#xff0c;代码量也不大&#xff09; starCTF2022_babynote 保护&#xff1a;保护全开 程序与漏洞分析&#xff1a; 程序实现了一个菜单堆&…

第3章:知识表示:概述、符号知识表示、向量知识表示

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

Python 从入门到精通 学习笔记 Day01

Python 从入门到精通 第一天 今日目标 计算机组成原理、编程语言、Python环境安装 第一个Python程序、PyCharm的安装与使用 Python的基础语法、Python的基本数据类型 一、计算机组成原理 计算机的组成 计算机硬件通常由以下几个部分组成: 1.中央处理器(CPU):负责执行计算机…

HarmonyOS4.0从零开始的开发教程03初识ArkTS开发语言(中)

HarmonyOS&#xff08;二&#xff09;初识ArkTS开发语言&#xff08;中&#xff09;之TypeScript入门 浅析ArkTS的起源和演进 1 引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力&#xff0c;到具备类…