【自动化运维】Python 的安装和使用

news2025/4/12 9:39:32

Python 的安装和使用

文章目录

  • Python 的安装和使用
    • 一、Linux环境安装Python
      • 1.1、设置Yum仓库
      • 1.2、安装依赖包
      • 1.3、编译Python
        • 1.3.1、解压Python压缩包
        • 1.3.2、配置Python
        • 1.3.3、编译及安装
        • 1.3.4、链接软连接
      • 1.4、测试Python3运行
      • 1.5、设置国内pip更新源
      • 1.6、更新pip版本(必须更新)
      • 1.7、测试更新源
    • 二、Python的语法基础
      • 2.1、标识符
      • 2.2、Python保留字
      • 2.3、注释
        • 2.3.1、单行注释
        • 2.3.2、多行注释
      • 2.4、语句与缩进
        • 2.4.1、语句
        • 2.4.2、代码块
        • 2.4.3、多行语句
      • 2.5、pass语句
    • 三、Python常用的数据类型
      • 3.1、数字
        • 3.1.1、整型和浮点型
        • 3.1.2、布尔型
        • 3.1.3、Python运算符
      • 3.2、字符串
        • 3.2.1、字符串的使用
        • 3.2.2、使用字符串注意事项
        • 3.3.3、字符串的其他用法
    • 四、列表
      • 4.1、列表的定义
      • 4.2、列表的取值
        • 4.2.1、取指定位置的值
        • 4.2.2、取指定范围的值
        • 4.2.3、修改列表元数值
      • 4.3、添加列表元素
        • 4.3.1、在列表最后添加元素
        • 4.3.2、在列表前添加元素
      • 4.4、删除列表元素
      • 4.5、查找列表元素
      • 4.6、合并列表
      • 4.7、重复列表
      • 4.8、列表常见问题
        • 4.8.1、索引越界
        • 4.8.2、负值索引
        • 4.8.3、获取不存在的索引问题
        • 4.8.4、获取列表之地那个范围同时指定正数和负数索引
        • 4.8.5、列表也可以是列表
    • 五、元组
      • 5.1、元组的创建
      • 5.2、元组的操作
        • 5.2.1、元组的取值
        • 5.2.2、删除整个元组
        • 5.2.3、元组列表互相转换操作
    • 六、字典
      • 6.1、字典的创建
      • 6.2、字典的取值操作
      • 6.3、字典的添加、修改、删除操作
        • 6.3.1、字典添加新元素
        • 6.3.2、修改字典元素
        • 6.3.3、删除字典中的元素
        • 6.3.4、字典中常见问题

一、Linux环境安装Python

  • 官方地址:http://www.python.org

1.1、设置Yum仓库

# 准备Base源
[root@python3 ~]#  curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo


# 准备扩展源EPEL
[root@python3 ~]# yum -y install epel-release.noarch

1.2、安装依赖包

# 安装源码编译需要的编译环境
[root@python3 ~]# yum -y install gcc zlib zlib-devel libffi libffi-devel


# 解决后期出现的方向键、删除键乱码问题,这里提前避免
[root@python3 ~]# yum -y install readline-devel openssl-devel openssl11 openssl11-devel


# 设置编译FLAG,以便使用最新的openssl库
[root@python3 ~]# export CFLAGS=$(pkg-config --cflags openssl11)
[root@python3 ~]# export LDFLAGS=$(pkg-config --libs openssl11)

1.3、编译Python

1.3.1、解压Python压缩包
[root@python3 ~]# tar xvf Python-3.11.6.tar.xz
1.3.2、配置Python
[root@python3 ~]# cd Python-3.11.6/
[root@python3 Python-3.11.6]# ./configure --prefix=/usr/local/python3


# 此处有可选配置项,含义如下:
--enable-optimizations:用PROFILE_TASK启用以配置文件主导的优化(PGO)
--with-lto:在编译过程中启用链接时间优化(LTO)
--enable-shared:启用共享Python库libpython的编译
--with-ssl:编译安装ssl模块到Python3中(默认)
1.3.3、编译及安装
[root@python3 Python-3.11.6]# make && make install


# 如果主机上已经安装有其他版本的Python3,注意是3的版本,要使用altinstall而不是install。二则的一个重要区别在于,后者会创建链接符号,将Python3等命令链接到正在安装的新版本Python3上,这可能会破坏系统。如果是Python2的版本,不会有此影响
1.3.4、链接软连接
[root@python3 Python-3.11.6]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@python3 Python-3.11.6]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

1.4、测试Python3运行

  • 安装设置完毕,测试Python3的运行情况,命令如下:
[root@python3 ~]# python3
Python 3.11.6 (main, Aug 12 2024, 08:28:21) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hello world')  # 打印一句话,每个程序员的第一个语句
hello world
# exit()或Ctrl+D可以退出Python命令终端
>>> exit()

1.5、设置国内pip更新源

  • pip是Python的一个包管理工具,主要用于 安装和管理Python包。它提供了一个简单的命令行接口,可以从Python Package index等源下载和安装软件包。
# 本次使用阿里云的更新源
[root@python3 ~]# mkdir -p /root/.config/pip/
[root@python3 ~]# cat <<EOF> /root/.config/pip/pip.conf 
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com
EOF
# 使用以下命令也可以设置pip更新源
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple 
pip3 config set install.trusted-host mirrors.aliyun.com

1.6、更新pip版本(必须更新)

[root@python3 ~]# pip3 install --upgrade pip

1.7、测试更新源

  • 安装一个获取日区间数据的pandas模块
[root@python3 ~]# pip3 install pandas

二、Python的语法基础

2.1、标识符

  • 所谓的标识符就是对变量、常量、函数、类等对象起的名字。
  • 首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不一样,Python对于表示标识符的命名如下规定:
    • 标识符的长度不受限制,但其中的字符必须是字符、数字、或者下划线(_),而不能使用空格、连字符、标点符号、引号或其他字符。
    • 标识符的第一个字符不能是数字,而必须是字母或者下划线。
    • Python严格区分大小写。
    • 不能将Python内置的关键字作为标识符。
  • 例如:a、abc、_id等都可以的。但是例如 a (以 a(以 a(以$开头的是PHP的变量语法),~abc,123a都是不可以的。这一点一定要注意。可能有人会问,中文可以作为标识符吗?答案是可以的。

2.2、Python保留字

  • Python保留字,也叫关键字,是Python语言官方确定的用作语法功能的专用标识符,不能把它们用作任何自定义标识符名称。关键字只包含小写字母。可以通过Python提供的库输出这些关键字:
  • Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字。如下所示:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

2.3、注释

  • 我们写的程序里,不光有代码,还要有很多注释。注释有说明性质、帮助性质的,它们在代码执行过程中相当于不存在,透明的。
2.3.1、单行注释
  • Python,以符号“#”为当行注释的开始,从它往后的本行的末尾,都是注释的内容。语法如下
>>> # 单行注释
2.3.2、多行注释
  • Python没有真正意义上的多行注释(块注释),语法如下
>>> # 第一行注释
>>> # 第二行注释
>>> # 第三行注释

2.4、语句与缩进

2.4.1、语句
  • 在代码中,能够完整表达某个意思、操作或者逻辑的最短代码,被称为语句。这里强调一下,Python的标准语言不需要使用分号。简单的换行就是表示语句已经结束。
>>> a = 123
>>> b = 456
>>> print("hello world")
2.4.2、代码块
  • 为完成某一特定功能而联系在一起的一组语句构成了一个代码块。有判断、循环、函数、类等各种代码块。代码块的首行通常以关键字开始,以冒号(:)结束。比如:
a = 10
if a > 5:
    print("1大于5")
else:
    print("a小于5")
    
    
# Python最具特色的语法就是使用缩进来表示代码块,不需要使用大括号像PHP、JAVA等语法都是使用({})来表示代码块。Python一般用四个空格来缩进。在Pycharm或vscode中tab自动回转成4个空格。在Linux环境中,如vim编辑器,建议使用空格。
2.4.3、多行语句
  • 前面的例子中都是多条语句在同一行,但如果一条语句实在太长,也可是可以占用多行的,可以使用反斜杠()来实现多行语句。
>>> print ("你好 \
... 我是 kgc \
... 很高兴认识你")


# 执行结果
你好 我是 kgc 很高兴认识你

2.5、pass语句

  • pass语句是占位语句,它什么都不做,只是为了保证语法的正确性而写。以下场景中,可以使用pass语句把或的输出语句换成pass
    • 当你不知道后面的代码怎么写的时候
    • 当你不需要代码细节的时候
    • 当语句必须,又没有实际内容可写的时候
    • 其它的一些你觉得需要的场景
a = 10
if a > 5:
    print("a大于5")
else:
    pass

三、Python常用的数据类型

  • Python内置的数据类型有数字、字符串、元组、列表和字典。

3.1、数字

  • 数字类型包括整型、浮点型、布尔型,声明时由Python内置的数据类型管理变量,在程序的后台实现数值与类型的关联,以及转换等操作。根据变量的值自动判断变量的类型,程序员不需要关心变量空间是什么类型,只需要知道创建的变量中才存放了一个数,通过编码对这个数值进行操作即可。
3.1.1、整型和浮点型
  • 整数使用整型表示,有小数位是哦那个浮点型表示
# 示例1:为变量赋予整型和浮点型的数值
>>> x = 123
>>> print (x)
123

>>> x = 1.98
>>> print (x)
1.98


# 示例1的代码中,首先定了变量x=123.此时的x的值是整数,x即是整型变量。当执行语句x=1.98时,x又变成了浮点型变量,由此可以看出,变量的类型是能改变的,与Java、C#语言等都是由区别的。这是因为当Python给已经存在的变量再次赋值时,实际上是创建了一个新的变量,即使变量名相同,但标识并不相同,变量的标识可以使用id函数输出。
3.1.2、布尔型
  • 布尔型适用于逻辑运算,有2个值True、False,表示真和假。
# 示例2:为变量赋值布尔型的数值
>>> f = True
>>> print(f)
True
>>> if(f):
...  print(1)
...
1  # 执行结果


# 代码定义了变量f=True。if是判断语句,为真则执行print语句,最后输出的是1,说明语句执行成功。
# 使用比较运行符返回的结果是布尔值
# 示例3:获取比较运算符结果示例代码如下
>>> 3>4
False  # 假
>>> 4.15>2
True   # 真
3.1.3、Python运算符
  • Python中使用的算术运算符和数学运算中的符号基本相同,又+、-、*、/(加、减、乘、除)和小括号组成,运算顺序也是先乘除后加减、小括号优先。下面演示几个示例说明它们的使用方法。
# 示例4:四则运算代码如下
# 同时给两个变量赋值
>>> x,y = 10,2
>>> print (x+y,x*y,x/y)
12 20 5.0

>>> print (5 + 8 * 3)
29

>>> print ((5+8)*3)
39

>>> print (5 + 8 * 3 /4)
11.0
  • Python还有两个算术运算符是%和**,分别实现求模和求幂运算。
  • 求模运算取余数,求幂是计算累乘的结果。
# 示例5:求模和求幂示例代码如下
>>> 8%5
>>> 8%4

>>> 2**2
>>> 2**4

3.2、字符串

  • Python中的字符串类型是一组包含数字】字母和符号的集合,作为一个整体使用。
3.2.1、字符串的使用
  • 在Python中有3中表示字符串的方式,单引号、双引号、三引号
# 示例6:Python字符串的3中表现方式
>>> name = '课工场'
>>> address = "文博西路"
>>> content = '''每时每课,给你好机会'''


>>> print (name)
>>> print (address)
>>> print (content)


# 在示例6中,变量name使用单引号,变量address使用双引号,变量content使用三引号,它们都是合法的Python字符串类型。需要注意的是,单引号和双引号作用是一样的,可以根据习惯使用。但是定义多行文字时,必须使用三引号。
3.2.2、使用字符串注意事项
  • 字符串的定义方式单引号、双引号、三引号大部分情况下作用是相同,但是特俗情况中使用也有所区别,下面列出需要注意的地方。
# 注意1:
# 单引号、双引号、三引号都是成对出现的。如果以单引号开头就要以单引号结尾,不能混合使用表示字符串。如下代码就会报错
>>> name = "课工场'
  File "<stdin>", line 1
    name = "课工场'
           ^
SyntaxError: unterminated string literal (detected at line 1)


>>> name = "课工场'''
  File "<stdin>", line 1
    name = "课工场'''
           ^
SyntaxError: unterminated string literal (detected at line 1)
# 注意2:
# 如果字符串中单独出现单引号或双引号,可以使用另一种引号定义。
>>> title1 = "Let' Go!"  # 双引号定义
>>> print (title1)
Let' Go!

>>> title2 = 'Let" Go!'
>>> print (title2)
Let" Go!

>>> title3 = '''Let' Go! Let" Go!'''  # 三引号定义
>>> print (title3)
Let' Go! Let" Go!
  • 字符串变量tiele1中出现了单引号,就需要使用双引号定义,字符串变量title2中出现了双引号,就需要使用单引号定义。当字符串中同时单引号和双引号,就需要使用三引号进行定义。
# 注意3:
# 当字符串中出现单引号、双引号等特俗字符时,还可以使用转义字符定义。Python中的转义字符是“\”,只要在特俗字符前面加上“\”,就可以输出原本的字符,而不需要关注定义字符除按使用的是单引号还是双引号。

# 示例8:使用转义字符为字符串赋值代码示例如下
>>> title = 'Let\' Go!'
>>> print (title)
Let' Go!



# 备注
\(在行尾时)续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
3.3.3、字符串的其他用法
  • Python的字符串可以进行乘法(*)的操作,使用一个整型数字和字符串相乘。
# 例如用数字3乘字符串“a”,结果是字符串“aaa”,等同于将字符串“a”连接了3遍
>>> print (3 * 'a')
aaa

四、列表

  • 列表(list)是Python中非常重要的数据类型,通常作为函数的返回类型。有一组元素组成,列表可以实现添加、删除和查找操作,元素值可以被修改。

4.1、列表的定义

  • 列表是Python内置的一种数据结构,由中括号"[]"定义,元素以逗号开发

  • 语法格式:列表名 = [元素1,元素2,…]

4.2、列表的取值

4.2.1、取指定位置的值
  • 列表中的数据是有序的,按定义时的顺序排好,可以单独取出某一位置元素的数值。
  • 语法格式:列表名[索引位置]
# 示例9:使用列表保存元素的数值,并输出示例代码如下
>>> num = ['001','002','003']

>>> print (num)
>>> print (num[0])
>>> print (num[1])
>>> print (num[2])


# 示例9代码中,定义的列表num中,存储有三个字符串,其顺序是“001”、“002”、“003”,取值时用列表名num加上中括号,数字表示索引位置。需要注意:列表中元素的值是由0开始,以1为单位依次递增
4.2.2、取指定范围的值
  • 语法格式:列表名[起始位置:终止位置]

  • 可以输出起始位置到终止位置前的元素,不包括终止位置的元素

# 示例10:输出列表中指定位置的元素
>>> num = ['001','002','003']
>>> print (num[0:1])
['001']

>>> print (num[0:2])
['001', '002']

>>> print (num[0:3])
['001', '002', '003']

>>> print (num[1:2])
['002']

>>> print (num[1:3])
['002', '003']


# 示例10中,num列表后的[0:1]表示获取由索引0开始至索引位置1之前的元素,所有只能取到1个元素;而[0:2]则可以取到索引2之前的元素,其他的与此相同。
4.2.3、修改列表元数值
  • 可以修改指定位置的列表元数值
  • 语法格式:列表名[索引位置] = 值
# 示例11:修改列表中指定位置的元素值
>>> num = ['001','002','003']
>>> num[0] = '004'  # 修改
>>> print (num)
['004', '002', '003']


# 定义列表num时,索引位置0的元素是“001”,修改它的值为“004”后,索引位置的值变为“004”

4.3、添加列表元素

  • 可以采用两种方式,添加向列表中添加元素
4.3.1、在列表最后添加元素
  • 可以把一个元素添加到列表的最后
  • 语法格式:append(元素值)
# 示例12:将元素添加到列表最后位置
>>> num = ['001','002','003']
>>> print (num)
['001', '002', '003']

>>> num.append('004')  # 末尾添加新元素
>>> print (num)
['001', '002', '003', '004']


# 示例12的代码执行语句num.append('004')之后,字符串”004“被添加到列表的末尾
4.3.2、在列表前添加元素
  • 在列表指定位置前插入新的元素
  • 语法格式:列表名.insert(索引位置,元素值)
>>> num = ['001','002','003']
>>> num.insert(1,'004')
>>> print (num)
['001', '004', '002', '003']


# 示例13中,语句num.insert(1,'004')的作用是在列表num的索引位置1之前插入字符串'004'。初始时,num有3个元素,索引位置1的当前元素是'002',执行示例13的代码后,字符串'004'插入到'002'的前面

4.4、删除列表元素

  • 可以删除列表指定索引位置的元素
  • 语法格式:del 列表名[索引位置]
# 示例14:删除列表中第2个元素
>>> num = ['001','002','003']
>>> del num[1]
>>> print (num)
['001', '003']


# 示例14中,首先,执行语句del num[1],使用del删除索引1的元素'002'。然后输出列表num中所有元素时,列表中已经不存在'002'元素

4.5、查找列表元素

  • 使用in关键字可以查找列表中是否存在指定的数值

  • 语法格式:元素值 in 列表名

  • 返回布尔类型True或False。如果查找到,返回True,否者返回False

# 示例15:使用关键字in查找列表中是否存在指定的数值
>>> num = ['001','002','003']
>>> num = ['001','002','003']
>>> '001' in num  
True  # 001存在
>>> '004' in num
False # 002不存在

4.6、合并列表

  • 多个列表可以使用加号(+)进行合并,加号后面的列表元素会追加到前面的列表的后面
# 示例16:使用+合并两个列表
>>> num1 = ['001','002']
>>> num2 = ['003','004']


>>> numAll = num1 + num2
>>> print (numAll)
['001', '002', '003', '004']


>>> numAll = num2 + num1
>>> print (numAll)
['003', '004', '001', '002']


# 示例16:定义了两个列表num1和num2。是哦那个加号进行合并操作时,加号后面的列表元素会追加到前面列表的后面

4.7、重复列表

  • 使用星号(*)可以对列表进行重复操作,与单独字符串乘法操作类似
# 示例17:使用*重复输出列表的元素值
>>> num1 = ['001','002']
>>> num = num1 * 5
>>> print (num)
['001', '002', '001', '002', '001', '002', '001', '002', '001', '002']


# 示例17中,语句num = num1*5表示为num赋值时,将num1的元素重复出现了5遍

4.8、列表常见问题

  • Python中,使用列表实现各种操作时,可能会得到意外的结果。其中最常见的问题是索引越界。索引越界是使用列表时经常犯的一个错误。如列表中有3个元素,因为索引位置是从0开始计算,所以最大的索引值是2。如果索引值大于2,表示索引是越界的,程序无法执行。
4.8.1、索引越界
>>> num1 = ['001','002','003']
>>> print (num1[5])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
4.8.2、负值索引
  • 索引值为5时,大于最大的索引值2,程序报索引越界错误。那么,当使用小于0的负数索引时会不会出错呢?答案是不会的,因为Python列表的负数索引表示的是由列表的末尾进行反向取值,也就是最后一个元素的位置也可以是哦那个所以-1取值,倒数第二个索引是-2,向前依次递减
>>> num1 = ['001','002','003']
>>> num1 = ['001','002','003']
>>> print (num1[-1])
003
>>> print (num1[-2])
002
>>> print (num1[-3])
001
4.8.3、获取不存在的索引问题
  • 当获取列表指定范围的一组元素时,不存在的列表索引越界的问题
>>> num = ['001','002','003']
>>> num1 = num[1:5]
>>> print (num1)
['002', '003']
>>> print (num)
['001', '002', '003']


# 列表num中有3个元素,获取列表范围时指定了最大位置是5,超出了最大索引值,程序可以正常执行,并没有报错
4.8.4、获取列表之地那个范围同时指定正数和负数索引
>>> num = ['001','002','003']
>>> print (num[0:-1])
['001', '002']


# 表示获取由索引位置0元素开始,到-1元素之前的所有元素
4.8.5、列表也可以是列表
>>> num = [['001','002','003'],['101','102','103'],['201','102','203']]
>>> print (num[0])
['001', '002', '003']

>>> print (num[0][0])
001

>>> print (num[2][1])
102


# 上述案例定了列表num,它里面的每一个元素也是一个列表,使用num[0]表示取到的是第一个元素值,对应的第一个列表。使用num[0][0]表示取到第一个元素列表的第一个值,使用print (num[2][1])表示取到第三个列表的第二个值

五、元组

  • 元组(tuple)和列表类似,也是Python的一种数据结构,由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字、甚至元组。但元组是不可被修改的,即元组创建后不能做任何的修改操作。元组通常表示一行数据,而元组中的元素表示不同的数据项。

5.1、元组的创建

  • 元组由关键字和小括号定义,一旦创建后就不能修改元组的内容
  • 语法格式:元组名 = (元素1,元素2,…)
  • 与列表最大的不同是:元组是写保护的,元组一旦创建就不能做任何修改。下面定义一个元组,尝试对它修改
>>> num = ('001','002','003')
>>> del num[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion


# 定义元组num后,尝试对索引位置0的元素值进行修改,程序直接报错。元组与列表的区别如下表所示
列表元组
元素方括号圆括号
可变性可变不可变
操作添加、修改、删除、搜索搜索
  • 在使用元组与列表去呗并不大,那么为什么要使用元组呢?主要使用元组是不可变的,操作速度比列表快,而且因为它不可以被修改,数据更加安全,所以要根据实际情况决定是使用元组还是列表,使程序更加高效合理

5.2、元组的操作

5.2.1、元组的取值
# 元组具有不可变性,所以相比列表的操作要少,其中取值操作与列表完全相同
>>> num = ('001','002','003')
>>> print (num[0])
001
>>> print (num[2])
003


# 与列表的取值操作完全相同,都是使用方括号、索引获取指定的位置的数值
5.2.2、删除整个元组
  • 元组不允许删除元组中的元素值,但是可以删除整个元组

  • 语法格式:del 元组名

# 示例18:元组删除报错代码如下
>>> num = ('001','002','003')
>>> del num[0]  # 删除元素,报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
# 删除整个元组
>>> print (num)
('001', '002', '003')

>>> del num  # 删除元组后元组不存在,报错
>>> print (num)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'num' is not defined. Did you mean: 'num1'?


# 定义元组num后,删除其中的某一个元素程序报错。删除整个元素后,再想使用元组,报未定义便令的错误
5.2.3、元组列表互相转换操作
  • 语法格式:list (列表名) 元组转换列表
# 示例19:元组转换为列表代码如下
>>> num = ('001','002','003')  # 元组
>>> listNum = list(num)  # 转换为列表
>>> print (listNum)
['001', '002', '003']

>>> listNum[0]='004'  # 修改列表
>>> print (listNum)
['004', '002', '003']

>>> print (type(num))  # 输出元组类型
<class 'tuple'>

>>> print (type(listNum))  # 输出列表类型
<class 'list'>


# 这段代码首先定义了元组num,然后把它转换为列表listNum,对列表listNum可以做修改元素的操作,使用type()函数输出了元组的列表的类型
  • 语法格式:tuple(列表名) 将列表转换为元组
# 示例25:列表转换为元组
>>> num = ['001','002','003']
>>> tupleNum = tuple(num)
>>> print (type(num))
<class 'list'>
>>> print (type(tupleNum))
<class 'tuple'>


# 可以看到转换是成功的,输出的类型正确

六、字典

  • 字典(dict)是Python中重要的数据类型,字典是由”键-值“对组成的集合,字典中的值通过键来引用。

6.1、字典的创建

  • 字典的每个元素都是键值对(key-value)组成,键值之间使用冒号分隔,”键值对“之间用逗号隔开,并且被包含在一对花括号中,键是唯一的,不能存在多个相同的值,且它们的值是无序的,键可以是数字、字符串、元组、一般用字符串作为键。
  • 语法格式:字典名 = {键1:值1,键2:值2,…}
# 示例代码如下
>>> mobile = {'Tom':'199111','Alice':'199222','Bob':'199333'}
>>> print (mobile)
{'Tom': '199111', 'Alice': '199222', 'Bob': '199333'}

>>> print (type(mobile))
<class 'dict'>


# 定义了一个字典mobile,存储的键的姓名、值是电话号码,由此,姓名和电话号码就构成了对应的关系,可以使用type()函数来查看它们的类型是”dict“

6.2、字典的取值操作

  • 字典的取值与元组和列表有所不同,元组和列表都是通过数字索引获取对应位置的值,而字典是通过键来获取对应的值。
# 示例代码如下
>>> mobile = {'Tom':'199111','Alice':'199222','Bob':'199333'}
>>> print (mobile['Tom'])
199111

>>> print (mobile['Bob'])
199333

6.3、字典的添加、修改、删除操作

6.3.1、字典添加新元素
  • 字典添加新元素只需要对新键进行赋值即可,字典中不存在的键,会自动进行添加
>>> mobile = {'Tom':'199111','Alice':'199222','Bob':'199333'}
>>> mobile['wzh']='199444'

>>> print (mobile)
{'Tom': '199111', 'Alice': '199222', 'Bob': '199333', 'wzh': '199444'}
  • 字典键值对的键名是区分大小写的,同一个单词,如果大小写不同,则被视为不同的键。
>>> mobile = {'Tom':'199111','tom':'199222'}
>>> print (mobile)
{'Tom': '199111', 'tom': '199222'}
6.3.2、修改字典元素
  • 修改字典中的元素,直接使用存在的键赋值即可
>>> mobile = {'Tom':'199111','Alice':'199222'}
>>> mobile['Tom'] = '199333'
>>> print (mobile)
{'Tom': '199333', 'Alice': '199222'}
6.3.3、删除字典中的元素
  • 删除字典中的元素,使用del函数
>>> mobile = {'Tom':'199111','Alice':'199222'}
>>> del mobile['Tom']
>>> print (mobile)
{'Alice': '199222'}


# 使用del函数删除键”Tom“,字典中的对应的键就不存在了
6.3.4、字典中常见问题
  • 字典不能使用”+“运算符执行连接操作
>>> mobile1 = {'Tom':'19911','Alice':'199222'}
>>> mobile2 = {'Tom2':'19911','Alice2':'199222'}
>>> print (mobile1 + mobile2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

# 上从面代码的运行结果可以得到结论:使用”+“运算符直接报错

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springcache+xxljob实现定时刷新缓存

目录 SpringCache详解 SpringCache概述 核心原理 接口抽象与多态 AOP动态代理 核心注解以及使用 公共属性 cacheNames KeyGenerator&#xff1a;key生成器 key condition&#xff1a;缓存的条件&#xff0c;对入参进行判断 注解 xxl-job详解 SpringcacheRedis实现…

vue2拖拉拽做个模拟公式工具

1. 成图 2. 介绍 就是简单拖拉拽来做个规则运算器&#xff0c;具体运算规则、校验规则自己加。 3. 代码 HTML代码 <template><div class"red-cont"><div class"red-top"><divclass"red-top-left"><div class&quo…

Windows查重工具,强烈推荐大家收藏!

我大家在用电脑的时候&#xff0c;是不是发现用得越久&#xff0c;电脑里的软件和文件就越多&#xff1f; 今天我给大家带来的这两款重复文件查找神器&#xff0c;简直就是电脑里的“清洁小能手”&#xff0c;能帮你把那些重复的文件和文件夹找出来。 Easy DupLicate Finder 重…

使用python完成手写数字识别

入门图像识别的第一个案例,看到好多小伙伴分享,也把自己当初的思路捋捋,写成一篇博客,作为记录和分享,也欢迎各位交流讨论。 实现思路 数据集:MNIST(包含60,000个训练样本和10,000个测试样本) 深度学习框架:Keras(基于TensorFlow) 模型架构:卷积神经网络(CNN) 实…

OpenLayers:如何控制Overlay的层级?

我最近在使用Overlay的时候遇到了一个问题&#xff0c;我向地图中添加了两种不同的Overlay&#xff08;下图中的蓝色标牌和粉色标牌&#xff09;&#xff0c;我希望粉色标牌可以显示在最上层&#xff0c;可偏偏蓝色标牌却将其遮挡住了。于是我对Overlay的层级开始起了兴趣&…

《Golang高性能网络编程:构建低延迟服务器应用》

在本文中&#xff0c;我们将深入探讨Golang高性能网络编程&#xff0c;帮助您构建低延迟服务器应用。我们将介绍Golang的网络编程特性、优化技巧和实际案例&#xff0c;让您更好地理解和应用Golang在网络编程领域的优势。 高性能网络编程简介 什么是Golang高性能网络编程 高性能…

数据结构C语言练习(设计循环队列)

一、循环队列简介 循环队列是一种线性数据结构&#xff0c;基于 FIFO&#xff08;先进先出&#xff09;原则&#xff0c;将队尾连接到队首形成循环。其核心优势是能复用队列之前用过的空间&#xff0c;避免普通队列 “假溢出” 问题。实现时&#xff0c;通常申请 k1 大小的数组…

vscode代码片段的设置与使用

在 Visual Studio Code (VS Code) 中&#xff0c;可以通过自定义**代码片段&#xff08;Snippets&#xff09;**快速插入常用代码模板。以下是详细设置步骤&#xff1a; 步骤 1&#xff1a;打开代码片段设置 按下快捷键 Ctrl Shift P&#xff08;Windows/Linux&#xff09;或…

uniapp -- 列表垂直方向拖拽drag组件

背景 需要在小程序中实现拖拽排序功能,所以就用到了m-drag拖拽组件,在开发的过程中,发现该组件在特殊的场景下会有些问题,并对其进行了拓展。 效果 组件代码 <template><!-- 创建一个垂直滚动视图,类名为m-drag --><scroll

一款非常小的软件,操作起来非常丝滑!

今天我想给大家分享一款超级实用的小软件&#xff0c;它是一款电脑上用的倒计时和关机助手。 关机助手 帮你自动关机 这款关机助手特别小巧&#xff0c;完全不需要安装&#xff0c;文件大小才60KB&#xff0c;比一个小小的文件还小。你只需要把它下载下来&#xff0c;双击打开…

FrameWork基础案例解析(四)

文章目录 单独拉取framework开机与开机动画横屏Android.mk语法单独编译SDKmake 忽略warning单独修改和编译Camera2单独编译Launcher3Android Studio 导入、修改、编译Settings导入 Android Studio 导入、修改、编译Launcher3android 开机默认进入指定Launcher植入自己的apk到系…

通过 C# 提取PDF文档中的图片

当 PDF 文件中包含有价值的图片&#xff0c;如艺术画作、设计素材、报告图表等&#xff0c;提取图片可以将这些图像资源进行单独保存&#xff0c;方便后续在不同的项目中使用&#xff0c;避免每次都要从 PDF 中查找。本文将介绍如何使用C#通过代码从PDF文档中提取图片&#xff…

国标GB28181视频监控平台EasyCVR保驾护航休闲娱乐“九小场所”安全运营

凭借降低人力资源、节约物资成本的优势&#xff0c;在多个场景得到广泛应用。如今&#xff0c;棋牌室、洗浴中心、酒店这类人员频繁流动和密集的场所&#xff0c;已成为安全管理的重点。​ 尽管部分棋牌室已安装了监控设备&#xff0c;但是设备功能单一&#xff0c;只能实现一…

GoLand 2024.3 中文 GO语言开发工具

GoLand 2024.3 中文 GO语言开发工具 文章目录 GoLand 2024.3 中文 GO语言开发工具一、介绍二、效果三、下载 一、介绍 JetBrains GoLand 2024 &#xff0c;是一款GO语言开发工具&#xff0c;全行代码补全&#xff1a;能使用本地运行的上下文感知深度学习模型&#xff0c;可以自…

CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题)

CentOS 7 强制升级Docker 24.x终极指南&#xff08;解决MySQL8镜像兼容性问题&#xff09; 旧版本&#xff1a; 新版本docker&#xff1a; 一、问题背景与方案选型 1.1 典型报错分析 The designated data directory /var/lib/mysql/ is unusable根本原因&#xff1a;旧版…

【区块链安全 | 第十九篇】类型之映射类型

文章目录 映射类型可迭代映射 映射类型 映射类型使用语法 mapping(KeyType KeyName? > ValueType ValueName?)&#xff0c;映射类型的变量声明使用语法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何内置值类型、bytes、st…

Flask与 FastAPI 对比:哪个更适合你的 Web 开发?

在开发 Web 应用时&#xff0c;Python 中有许多流行的 Web 框架可以选择&#xff0c;其中 Flask 和 FastAPI 是两款广受欢迎的框架。它们各有特色&#xff0c;适用于不同的应用场景。本文将从多个角度对比这两个框架&#xff0c;帮助你更好地选择适合的框架来构建你的 Web 应用…

QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理

目录 1.简介 2.原理概述 3.实现分析 3.1.通过方法名调用方法的实现分析 3.2.通过可调用对象调用方法的实现分析 4.使用场景 5.总结 1.简介 QMetaObject::invokeMethod 是 Qt 框架中的一个静态方法&#xff0c;用于在运行时调用对象的成员函数。这个方法提供了一种动态调…

【无人机】无人机PX4飞控系统高级软件架构

目录 1、概述&#xff08;图解&#xff09; 一、数据存储层&#xff08;Storage&#xff09; 二、外部通信层&#xff08;External Connectivity&#xff09; 三、核心通信枢纽&#xff08;Message Bus&#xff09; 四、硬件驱动层&#xff08;Drivers&#xff09; 五、飞…

【SPP】蓝牙链路控制(LC)在SPP中互操作性深度解析

在蓝牙协议栈的精密分层体系中&#xff0c;其链路控制&#xff08;Link Control, LC&#xff09;层作为基带层的核心组件&#xff0c;承载着物理信道管理、连接建立与维护等关键任务。其互操作性要求直接决定了不同厂商设备能否实现无缝通信。本文将以蓝牙技术规范中的LC互操作…